Android学习笔记——Handler消息分发

Posted David-Kuper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android学习笔记——Handler消息分发相关的知识,希望对你有一定的参考价值。

Handler 消息分发

Handler事件分发机制是 基于生产者/消费者模型,使用Linux下的pipe(管道)实现的,读取和写入相互协调实现等待/通知。Handler机制是用于处理线程间消息分发的。

主要角色:

Handler(事件处理)、MessageQueue(消息队列)、Looper(消息循环)。
一个线程下可以有多个Handle,但只能拥有一个MessageQueue和一个Looper;每个Handle可以定义处理一类消息。

角色职责:

  • Handler:事件的分发和处理。将事件分发至该Handle所在线程下的消息队列;处理发送至该Handle所在线程并且递交给当前Handle的消息;Handler中含有MessageQueue和Looper的引用,含有Looper引用是为了表示该Handler所对应的Looper,从而关联MessageQueue 以便向MessageQueue中获取消息;

  • MessageQueue:消息对象的存储,入队和出队。消息对象里携带了该消息所对应的目标Handler,用于分发过程中标示信息传递终点。

  • Looper:消息的循环,不断监听MessageQueue队列,从队列中取出消息发送至相应的目标Hander。Looper中含有Thread 和MessageQueue的引用。Thread、MessageQueue引用是在prepare时完成,标识该消息循环的线程和其消息队列。 一旦prepare完成,即调用loop函数,进入消息循环过程,取出队列中的消息发送至目标Handler。

消息分发流程图

以上是关于Android学习笔记——Handler消息分发的主要内容,如果未能解决你的问题,请参考以下文章

Android Handler消息机制03-Message源码学习

关于Handler的学习笔记

Android Handler消息机制03-Message源码学习

Android学习笔记(十三) Handler

Android——消息分发机制

ANDROID_MARS学习笔记_S01原始版_008_Handler(异步消息处理机制)