Handler消息机制

http://ddrv.cn/a/296399

 

Looper.prepare()

其实里面是new 了一个Looper,而new Looper里面是创建了一个消息队列

Looper.loop() 消息循环

记住:一个线程对应一个Looper对象;然后在创建Looper的时候创建了一个MessagQueue消息队列管理消息的入栈和出栈,也是一个线程对应一个MessagQueue;

执行Looper.loop方法让该线程创建一个死循环,不断的调用Message msg = queue.next();来从消息队列里面取出消息,并进行处理:msg.target.dispatchMessage(msg)

那么Handler,Looper,Message之间的关系就是:handler负责不断发送message到MessageQueue;Looper将消息队列中的消息一个一个取出回调给dispatchMessage方法;最后消息回到handler所在的线程,通过handler的callback方法进行处理。

Handler消息机制

在ActivityThread中不仅实现了Looper.prepareMainLooper()方法我们还看到

有个Looper.loop()方法

 

 

异步消息处理机制流程示意图

Android 中的异步消息处理主要由4 个部分组成:

Message 、Handler 、MessageQueue 和Looper