Android Handler、MessageQueue、Loo

2016-06-01  本文已影响90人  祝小年

Handler概述

Handler的作用是线程间通信,在不同线程中间传递消息。

消息循环主题结构图例分析

Paste_Image.png

从图中可以看出,四种颜色分别代表了四个对象,并且大致描述了几个对象之间的关系,以及消息的流转过程,首先Handler通过sendMessage将消息投递给MessageQueue,Looper通过消息循环(loop)不断的从MessageQueue中取出消息,然后消息被Handler的dispatchMessage分发到handleMessage方法消费掉。

Handler

通过Handler的sendMessage等方法来投递消息到MessageQueue,通过handleMessage来消费Message。Handler必须要有一个已经prepare好的Looper对象,也就是说必须调用了prepare方法(也包括prepareMainLooper方法),究其根本是初始化一个消息队列,这一过程将在下文中详细分析。

Looper

Looper负责从MessageQueue中取出消息,然后通过执行message.target.dispatchMessage()消费掉这个消息,这里的target就是Handler。

MessageQueue

消息队列,管理Handler投递过来的消息。

Message

用来承载数据的消息,最终被Handler消费掉。

UML类图分析

Paste_Image.png
上一篇下一篇

猜你喜欢

热点阅读