android学习笔记之handler消息传递机制的实现方式

handler消息传递机制在前面也说过了,今天来说一下handler消息传递机制是怎么实现的。
handle并不是单独工作的,要想handler工作,还需要有其他组件,比如looper、Message、MessageQueue。
在Android中一个线程对应一个Looper,一个Looper对象对应一个MessageQueue,看下图,Looper是个循环者,它会不断的进行尝试去获取MessageQueue中的Message;MessageQueue是消息队列,是用来存储Message的,它遵循先进先出原则;Message就是要传递的消息。
handler在工作时,首先接收Message对象,将这个Message对象入到MessageQueue的队尾,Looper会不断的去从队首取出MessageQueue中的消息,然后发送给handler对象,让handler对象来处理消息,就算MessageQueue中的消息全发送完成,Looper也不会停下,他会不断的等待handler对象传递Message。
在这里插入图片描述
因此,要想使用handler,必须在当前线程中存在一个Looper对象。
在主线程中, 系统在初始化时会自动创建一个Looper对象;如果要在子线程中必须创建Looper对象才行。
在一个线程中,只能有一个Looper和MessageQueue,但可以有多个Handler,这些Handler可以共用一个Looper和MessageQueue。

发布了29 篇原创文章 · 获赞 17 · 访问量 9459

猜你喜欢

转载自blog.csdn.net/qq_34423913/article/details/104556218