当面试官问到你消息对列的时候,恭喜你,已经跨过初级,在试探你的中级水平了。
Android的消息循环是参考Windows的消息循环机制来实现的。
消息队列4件套 Message、MessageQueue、Looper、Handler
1、Message 是消息对列的消息实体类,因为消息队列中会存放最多10个Message对象。常用属性 what,是消息体的Tag,用来区分是那个一消息体。
2、MessageQueue 先进先出”的原则存放消息,将Message对象以链表的方式串联起来。
3、Looper 是MessageQueue的管理者,主线程中是一对一的关系。子线程需要用到消息对列的话就需要经典二人组 。先调用 Looper.prepare()方法,然后再调用Looper.loop();
4、Handler 是封装和处理Message对象的。
通过源码可知消息走向如下
handler.sendMessage()-->handler.sendMessageDelayed()-->handler.sendMessageAtTime()-->msg.target = this;queue.enqueueMessage==>把msg添加到消息队列中