Android的MessageQueue经历过一次大的变化,在2.0的时候,还没有native这一层。但到了2.3,就变为了现在这种模式。
TL,DR
- MessageQueue是个单链表
- MessageQueue里消息按时间排序
- MessageQueue的next()是个堵塞方法
MessageQueue理解的核心在next()这里。next()的实现根据版本不同有两种,一种是Java的实现,一种是带动native层的实现。
Java的实现比较简单,就是wait()和notify()。
目前使用的方式是在native层整了一份MessageQueue, Looper。具体过程深入理解Android卷2写的很好了,先直接看下面的参考资料吧。