出处:2019年vivo秋招
问题链接:https://www.nowcoder.com/discuss/197937
本文时间:2019.07.31
解题参考:本篇是根据论坛大佬的讨论总结出来
参考文章:https://blog.youkuaiyun.com/ElevenDGQ/article/details/82347396
------------------------------------------------------------ 我的理解 ----------------------------------------------------------------
1.基本原理: 为了实现不同线程间的通信,实现在新创建的子线程中操作UI界面,Android引入了Handler消息传递机制。在Android中一个线程对应一个Looper对象,而一个Looper对象又对应一个MessageQueue,MessageQueue用于存放Message,Handler负责发生Message给Looper管理的MessageQueue,然后Looper又从MessageQueue中取出消息,并分配给Handler进行处理。
2.异步消息处理过程图:异步消息处理机制可参考文章https://www.cnblogs.com/hj-applyex/p/5460538.html
3.MessageQueue
里可以有不同Handler
的Message吗?
可以
我的测试例子如下:
证明在主线程的MessageQueue中同时包含有handler1和handler2的Message,但是Looper在处理时会根据Message的TargtHandler都调用指定的Handler的handleMessage方法