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 的消息传递流程。