Handler、Looper、Message、MessageQueue基础流程分析
2017-03-15 13:13:43 8 举报
Handler、Looper、Message、MessageQueue基础流程分析
作者其他创作
大纲/内容
mLooper =Looper.myLooper();mQueue = looper.mQueue;
queue.enqueueMessage(msg....)
MessageQueue
ThreadLocal sThreadLocal
sThreadLocal.set(new Looper(quitAllowed));
return mMessages=mMessages.next;//取出链表的第一个元素 并把第二个元素赋给mMessages下次的话mMessages还是链表的第一个元素
static Message sPool;//使用后的空消息回收的主要用于obtain
Handler
next()
dispatchMessage()
入口
msg.recycleUnchecked();
循环queue.next()
msg.target.dispatchMessage(msg);
loop()
sendMessageAtTime(Message msg.....)(sendMessage最终会走)
构造方法
msg
mMessages;//msg链表的第一个元素
handleMessage(Message msg)
Looper
msg.target = this;//this就是handler
回收旧消息
enqueueMessage(Message msg....)目的:放到msg链表的最后一个
prepare(booleanquitAllowed)
注意loop()是一直运行的
getlooper()
Message
出口
Message next
0 条评论
下一页