从使用到源码详解handler、message、MessageQueue、Looper。
几种使用情景
一、子线程向主线程通信。
二、主线程向子线程通信
三、子线程向子线程通信
结合以上例子及发消息和接收消息的过程,可以看出做了如下步骤:
1、Handler发消息。然而Handler只负责处理消息,至于消息的提取还是得依赖Looper对象,所以在new Handler之前会有Looper.prepare(主线程在应用启动过程中已创建Looper)。
初始化Handler
到此,就建立了Handler、Looper、MessageQueue的关系,只要调用Looper.loop(),就启动了整套消息循环系统。
到这一步,Looper中若loop到消息则已交给Handler,所以接下来我们可以看,接受消息了。
2、Handler接收并处理消息。
Handler.dispatchMessage,接着又调用handleMessage。这样一个发送到接收处理的流程结束。