1. Android组件

  • Application
  • Core Java
  • Application framework: Android classes
  • Native Lib: C/C++ libs
  • Runtime: Dalvik / ART (Android Runtime)
  • Linux kernel: Underlying OS

Activity

Service

  • Started Service
  • Bound Service

    ContentProvider

    BroadcastReceiver

Linux进程

生命周期

2. Java多线程

基础

内部锁与Java监视器

* Blocked * Executing * Waiting

3. Android多线程应用

Android线程

  • UI线程
  • Binder线程
  • Background线程

Linux进程与线程

  • UID: User ID
  • PID: Process identifier
  • PPID: Parent process identifier (For Android: Zygote)
  • Stack: 本地指针与变量
  • Heap: 进程地址空间

调度

  • Priority
1
2
  Process.setThreadPriority(int priority); // 当前线程. 
  Process.setThreadPriority(int     threadId, int priority); // 指定线程id
  • Control group
  • Background Group总共有不能多于 ~5 - 10%的执行时间

线程通信

管道 demo

共享内存

队列

Android Message

  • android.os.Looper: 消息分配器与一个且唯一一个消费线程关联
  • android.os.Handler: 将消息插入队列,Looper有许多handlers,但是他们都将消息插入同一队列
  • android.os.MessageQueue: 不受限制的消息链表每个Looper最多一个链表
  • android.os.Message: 在消费线程执行

进程通信

Android RPC

AIDL

Messenger

内存管理

线程生命周期

线程池生命周期

AsyncTask

Services

AsyncQueryHandler

Loader框架

Android异步机制


References: