Handler源码讲解

189 篇文章 0 订阅
162 篇文章 0 订阅

1、

 

2、

 

3、

4、

handler.send()或者handler.post()的方案,是发送消息,并添加到消息队列里面来。在app启动的时候,主线程的loop已经在滚动了,滚动的时候带着messagequeue不停地轮询,当通过handler发送消息的时候,会将消息放入已经在轮询的消息队列中去。然后在messagequeue里面,轮询调用next(),调用next()函数把消息分发出去。

5、

sendMessage()最终调用的都是enqueueMessage()方法,所以需要看MessageQueue中的enqueueMessage()方法

6、

循环遍历消息,比较消息的时间,如果时间比当前时间小的话,则说明找到了消息,跳出循环,将消息发送出去

7、

8、

handler的数据结构

里面包含了Looper和MessageQueue,看源码,首先看构造函数。看一个类,一定要看构造函数。

9、handler中有很多构造函数,但是最终调用的只有这一个构造函数

10、

11、

12、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值