记录handler学习1

这里写自定义目录标题

1.handler的send、post最后都会来到enqueueMessage这个函数,这个函数主要干了什么呢?
在这里插入图片描述
首先需要知道Message是一个类似链表的类,他里面有Message next这个成员变量。mMessages是一个链表,他首先判断mMessages是否为空,或者新来的msg他的时间是不是比我这个链表更早,如果是,那么msg的next指针指向mMessages,也就是msg会插进队列的最前面。
正常情况下,遍历mMessages链表,如果到了结尾,或者某个message的时间比新来的msg时间要晚,则将msg插入其中。

2.接下来将是怎么把msg取出来的。首先我们先调用looper类的loop函数,loop函数是在ActivityThread的main函数里面自动创建调用的,loop会从当前Thread获取,若!= null,则会报错,这也就解释了为什么一个Thread对应一个loop。在loop函数里有一个无限循环的for循环,这样主线程就一直有程序,一直能存活

在这里插入图片描述
在这里插入图片描述
真正的取Message是通过next,然后再调用dispathchMessage
在这里插入图片描述
先判断是post海事send;再判断需不需要拦截

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值