handler消息发送机制

android2.3之后  从android4.0正式开始  主线程不能访问网络,子线程不能操作UI控件,引入hander消息发送机制。
我们通过子线程拿到数据,把它放在message中,通过Hander.sendMessage方法,



把消息发送,发送消息之后,hander调用equeueMessage方法(发送方)把消息push到MessageQueue消息队列中(MessageQueue.equeueMessage接收方)一次握手  


消息的累加,造成不断的压栈,这时looper提供动力调用loop方法开启无限循环,MessageQueue调用next()方法将货物向前传送 货物自己被传送到我们的主线程中,
货物取出自己身上的标记((msg.getTarget()取出自己身上的标记是Handler )之后执行Handler.dispatchMessage把消息分发给Hander(分发就是接口回调CallBack,
通过handeMessage()方法获得数据)。通过回调接口中的HandleMessage()方法,由此主线程操作UI控件。


由于本地线程ThreadLocal<looper> 保证了looper消息泵、MessageQueue消息队列与主线程的唯一性,


本地线程ThreadLocal<looper> 保证了looper、MessageQueue消息队列与主线程的唯一性,


一个线程有且只有一个looper 本地线程变量ThreadLocal<Looper>保证Looper的唯一性用final修饰  消息泵需要充电加水所以需要前期的准备工作prepare()方法

主线程在创建的是候就自动给我们创建了一个preparedMainLoop()
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值