解决问题: 线程间的通讯
- 子线程和主线程通讯–> handler在主线程中新建
- 子线程1和子线程2通讯 –> handler在子线程2中新建
主线程和子线程通讯 –> handler在子线程中新建
Handler: 创建Message,发送Message,处理Message
- Message: 封装数据信息
- target:封装了handler实例
- callbak: 存放的是runable–>任务
- MessageQueue: 装Message, FIFO
- Looper:轮询器,轮询MessageQueue
一个线程只能对应一个Looper和一个MessageQueue
一个线程中可以有多个一个handler
handler可以不可以在不同的线程中创建呢
源码:
handler:
1. obtainMessage: 创建Message
2. sendMessage:将Message放到Queue
3. post:—>sendMessage,给message添加了callback的标记, 将Message放到Queue
1. post
4. removeMessages: 移除等待执行的message
5. removeCallbacks: 移除等待执行的message
6. dispatchMessage: