handler机制
一. handler作用
包含线程队列和消息队列,实现异步的消息处理机制.
1.运行在某个线程上,共享线程的消息队列.
2.接受消息,调度消息,派发消息和处理消息.
3.实现消息的异步处理;
Handler能够让你发送和处理消息,以及Runnable对象;每个Handler对象对应一个Thread和Thread的消息队列。当你创建一个Handler时,它就和Thread的消息队列绑定在一起,然后就可以传递消息和runnable对象到消息队列中,执行消息后就从消息队列中退出。
Handler的作用就是:调度消息和runnable对象去被执行;使动作在不同的线程中被执行。
二. 模型图
转载:https://blog.csdn.net/android_dong/article/details/81134692
Handler消息处理模型如下图:
模型的解释:以Handler的sendMessage方法为例,当发送一个消息后,会将此消息加入消息队列MessageQueue中,Looper负责去遍历消息队列并且将队列中的消息分发给对应的Handler进行处理,在Handler的handleMessage方法中处理该消息,这就完成了一个消息的发送和处理过程。那么,这些过程是怎么进行的?会涉及哪些方法的调用?本文后面会进行介绍。
这里从图中可以看到参与消息处理有四个对象,它们分别是Handler, Message, MessageQueue和 Looper,它们的源码都在android.os包下面,下面是它们的类定义:
https://blog.csdn.net/u012974916/article/details/24580405
https://blog.csdn.net/songfeihu0810232/article/details/78648706