Handler 相关知识
要想快速掌握Handler?必须了解Handler是什么。它是干什么的 。
Habdler是android子线程跟主线程发送消息,主线程处理消息的一种通信机制
Handler的作用是可以让其耗时的操作都交给子线程。用来发送跟处理消息
Handler包含四个类:
分别有Handler,Message,MessageQueue,Looper;
Message:它可以用来存储消息
MessageQueue:简单理解 它就是一个可以存放消息的一个容器即消息队列
Looper:利用for(死循环) 不断地从MessageQueue消息队列中抽取信息,有消息就做处理,可以在主线程和子线程之间互相传递数据 用来接收消息的返回对象给Handler
并且一个线程只能有一个looper,但是可以有多个Handler
消息机制的架构
在子线程执行完耗时操作,handler》发送消息,将调用meaasgequeueu.enqueueMessage(enqueue入队),想消息队列+消息
Looper:loop开启循环,不断从线程池中读取消息,调用目标handler的dispatchmessage方法传递消息,》返回到handler所在线程,目标handler收到消息,调用handlermessage接收,处理消息
messagequeueu、handler、looper三者的关系
每个线程》only一个looper,looper》save在threadlooper中,主线程》有一个looper不必创建,其他线程还是要创建的,一个线程可以有多个handler,一个looper维护一个messagequeue,
总结:
looper有一个MessageQueue
MessageQueue有一组待处理的message
Massage记录发送和处理的handler
handler中有Looper和MassageQueue