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

来源:互联网 发布:久其通用数据平台 编辑:程序博客网 时间:2024/06/15 12:31

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。

消息分发流程图

这里写图片描述

0 0