高效的Android线程
Contents
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: