问题:
- Handler是什么?作用是什么?
- Handler、Loop、MessageQueue、Thread各自的作用,和他们之间的关系。
- 多个Handler实例发送消息时,为什么是当前Handler收到,而不是其他Handler收到
- Looper.loop()为什么不阻塞主线程
- 绘制、点击、Activit生命周期和Handler的关系
- Handler.post()、Handler.handleMessage分别执行在什么线程
- Message是如何发送的。
- Handler导致如何Activity泄漏
- HandlerThread 有什么作用 ## handler是什么? 作用是什么? 我们讲Handler、Loop、MessageQueue等类的时候,最需要思考的一个问题是这些类是什么,作用是什么?
是什么?
个人理解,Handler系列类可以看成是简单的Java类,遵循java的运行时标准。
Handler可以认为是生产者、消费者模式中的生产者。Loop为消费者。MessageQueue是产品库存。
当这一套机制运用到android的GUI中时,就代表了我们所熟知的应用的主线程。当然,这一套机制也可以用于需要循环处理消息的地方。可以在源码中搜索Looper.prepare()方法,可发现android系统中还有97处使用这种方式来进行消息的生产与消费。

作用?
发送消息。
网上有说可以用于线程运行,个人觉得这个描述不准确,可以由如下源码得知,发送的Runnable也是被封装为消息由Looper消费掉的。
Handler.java
public final boolean post(Runnable r){
return sendMessageDelayed(getPostMessage(r), 0);
}
重点看下getPostMessage()方法
private static Message getPostMessage(Runnable r) {
Message m = Message.obtain();
m.callback = r;
return m;