基础篇
MessageQueue对开发者是透明的,它是被Handler和Looper使用。下面直接分析源代码。
MessageQueue源代码位于下面的路径,一共872行(基于Android N)。
Frameworks/base/core/java/android/os/MessageQueue.java 872行
MessageQueue,顾名思义,消息队列,是用来存放和管理Message的类。里面用到的数据结构是单项链表。MessageQueue有一个成员变量mMessages,类型是Message,存放的是消息链表的表头,从上一篇文章知道Message有一个成员变量next(类型也是Message),这个next存放下一个消息或null,这样就构成一个单项链表的结构。
链表里面的消息是有顺序的,根据消息的触发时间进行排序,实现是通过Message的when变量进行排序,值越大越靠近表尾。
链表里面的消息分为同步消息和异步消息。除了同步消息和异步消息还有一类特殊的存在,叫做同步障碍(sync barrier)。同步消息和异