Android:关于 Handler

Android的消息机制(Handler的机制原理),需要先了解几个概念

1,Message:消息的载体,相当于一件快递邮件

2,MessageQueue:消息队列,相当于一个快递中心,它里面可以存放着很多的 Message

3,Looper:循环去 MessageQueue 中取 Message ,若是 MessageQueue 中没有 Message ,则当前线程进入阻塞状态,就相当于快递中心的拣货员

4,Handler:负责 Message的运送派发,相当于快递小哥的角色。

Handler 消息通信的流程分析

1.首先在 Handler中通过send... 和 post... 发送消息

post.. 发送消息
send... 发送消息

2. 无论是哪一种方式,都会通过 enqueueMessage() 方法,将 Message 根据时间优先级,添加进入 MessageQueue 中,具体代码如下:

将 message添加进入 messageQueue 中

注:MeaageQueue中,采用的数据结构为“优先级队列”,它是根据时间来排序的,越靠近当前时间的 message 越靠前。

3:我们知道,与 MeaageQueue 一起结合使用的是 Looper,它的作用是通过 Looper.loop() 方法不停的循环去 MeaageQueue 中取消息。

loop方法的实现

注:queue.next();方法,在没有消息的时候,会阻塞当前线程,释放CPU。

4:当我们通过 queue.next() 取出 Message 之后,在通过 Handler 的 dispatchMessage(msg) 方法将消息分发出去;最终,进入 Handler 的 handlerMessage() 方法中:

Loop循环取消息并分发消息
Handler 的消息处理

以上,就是 Handler 的消息传递流程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容