Handler基础
Handler事件分发相关类
1.Message:消息对象,可通过Bundle存储数据及Runable存储业务逻辑。
Message的属性:
long when;
Handler target;
Runnable callback;
2.Handler:发送,分发及处理Message。
Handler的属性:
MessageQueue mQueue;
Looper mLooper;
Callback mCallback;
3.MessageQueue:消息队列,保存Handler发送的消息。
4.Looper:循环从MessageQueue中读取消息交给Handler分发。
Looper的属性:
MessageQueue mQueue;
Thread mThread;
5.ThreadLocal:保证每一个Thread中只有一个Looper。
发送Message相关函数
1.post(Runnable r):发送一个存储了业务逻辑的Message
2.postAtTime(Runnable r, long uptimeMillis):可设置“精确”时间,在你设置的这个时间之前,不会被MessageQueue next()出来给Looper
3.postAtTime(Runnable r, Object token, long uptimeMillis)
4.postDelayed(Runnable r, long delayMillis):发送延迟消息,内部调用是这样的sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis)
5.postAtFrontOfQueue(Runnable r):发送一个排在队列之前的Message,也就是说不管发送这个Message之前MessageQueue中有多少Message,下一个被处理的就是现在发送的消息。
6.sendMessage(Message msg)
7.sendEmptyMessage(int what)
8.sendEmptyMessageDelayed(int what, long delayMillis)
9.sendEmptyMessageAtTime(int what, long uptimeMillis)
10.sendMessageDelayed(Message msg, long delayMillis)
11.sendMessageAtTime(Message msg, long uptimeMillis)
12.sendMessageAtFrontOfQueue(Message msg)
Handler消息机制分发及处理流程分析
建立Handler消息机制
在Looper源码注释中有这么一段告诉了我们在普通Thread中怎么去使用Looper来建立Handler消息机制,我加入了Callback回调,以便下面的处理流程分析
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare</