handler具体插入和获取
2021-07-11 20:36:23 0 举报
handler的理解
作者其他创作
大纲/内容
获取消息Message msg = queue.next()
msg
同步msg
post
新异步msg
唤醒后执行
获取异步msg
Looper循环获取MessageQueue上的消息loop
不唤醒
dispatchMessage
根据触发时间,插入的消息
刚新插入的消息,head头,唤醒,next取出执行
有消息屏障优先处理这条消息
唤醒
屏障msg
调用handler处理消息msg.target.dispatchMessage(msg)
插入异步消息
MessageQueue中放入和获取msg
插入头
异步msg
发送
当前时间小于当前链表头节点时间
头部是屏障消息:不执行同步msg,寻找异步msg执行
有消息屏障,但是前面还有一条异步消息,可能是延迟处理,不需要唤醒
获取同步msg
处理
sendEmptyMessage
链表为空
直接获取链表头部的消息执行
插入中间
当前触发时间0
插入同步消息(延迟消息)
获取msg(next)
放入msg(enqueueMessage)
handler发送和处理消息
休眠态:头部是延迟消息
0 条评论
下一页