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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值