高效的Android线程
2017-12-27 本文已影响84人
llitfk_DockOne
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
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: