Looper 负责循环程序的执行和MessageQueue消息队列。
Handler是负责消息通信。
发送消息:当我们调用handler发送消息的时候,会先把消息压入消息队列中,等待looper循环程序进行处理。
循环程序:Looper会启动loop方法启动循环程序然后调用handler的分发方法去处理消息,回调给相应的线程去处理。
在UI线程中我们不需要去给线程创建Looper对象,UI线程会自动创建。
但是如果我们是自己的其他线程中,我们需要去创建一个Looper对象,然后调用prepare方法准备,然后调用loop方法启动循环程序去处理消息队列。
发送消息流程:
Handler循环处理程序流程:
Looper结构图: