Handler详解

Handler主要用于异步消息的处理
Looper
内部包含一个消息对列,也就是MessageQueue,所有的handler发送的消息都走向这个消息对列
Loopler.looper方法,就是一个死循环,不断地从MessageQueue取消息,如果有消息就处理消息,没有消息就阻塞

MessageQueue
就是一个消息对列,可以添加消息,并处理消息

handler也很简单,内部会跟Looper进行关联,也就是说在handler的内部可以找到Looper,找到Looper也就找到了MessageQueue,在handler中发送消息,其实就是向MessageQueue队列中发送消息

总结
Handler通过sendMessage()方法发送Message到MessageQueue队列
当前Thread中Looper通过调用loop(),不断取出达到触发条件的Message,通过对应target(Handler)的dispatchMessage()方法,将Message交给Handler的handleMessage()方法来处理。
一个线程对应一个Looper,一个Looper对应一个MessageQueue,一个MessageQueue可以对用多个Message。但是一个Message只能让一个handler来处理(就是Message中target所指定的handler)。

Handler详解