Handler类:
Handler是一个辅助类,辅助Looper类完成消息的相关功能
重要成员:
final MessageQueue mQueue;
final Looper mLooper;
final Callback mCallback;
final Looper mLooper;
final Callback mCallback;
1. Message部分
- 完成消息的创建
- 消息插入到 消息队列中
- public final boolean hasMessages(int what) 判断消息队列中是否有消息
- public final Message obtainMessage(int what) 创建消息
- removeMessage()
- sendEmptyMessage(int what) 发送消息并添加到消息队列
- sendMessage(Message msg) 发送消息并添加到消息队列
- sendMessageAtFrontofQueue(Message msg) 发送消息并添加到消息队列
注:一般创建消息时,handler把Message的target设为自己(即当前的handler对象),除了封装消息的添加,这样可用于后面handler的消息处理函数的调用,
eg. dispatchMessage() 等。
2. 消息处理。
- dispatchMessage(Message msg)
- HandleMessage(Message msg)
dispatchMessage消息处理优先级机制
1. 若Msg本身的callback不为空,这调用msg本身的callback处理消息。
2. 若当前Handler类有设置mCallback,这调用mCallback.handlerMessage(msg) 处理消息。
3. 若上述都没有定义,则由Handler子类实现的handlerMessage()来处理。
线程间Looper和Handler同步的问题!
一般使用wait() 和NotifyAll()处理。