Handler
相信大家对Handler再熟悉不过了,平常使用它的频率也比较高,我们知道它是用来线程间通信的,但是handler是怎么实现通信的,可能就需要我们做进一步的了解,在面试中也是经常会问到的问题,下面我就带着大家跟一跟Handler的源码。
在跟代码之前我们先对Handler原理做个大致打介绍:
Handler:用来发送消息,处理消息
Message:消息实体对象,handler通过sendMsg将实体放到消息队列里面
MessageQueue:存放消息的队列
Looper:消息轮询器,轮询消息队列的消息然后取出,交给handler处理
Handler源码
进入Handler实现,首先看一下代码行数800行,并不多,注释都有100行,所以Handler的代码相对很少,它的主要方法都有:
那么上面打方法我们应该怎么看呢?我们在看源码的时候通常会遇到这个问题,方法那么多,应该从何处看起?不要急,我来交大家一个方法:
首先看代码有多少行,心里大致有个底,然后是构造方法,看看有哪些构造函数,然后浏览一些setter,getter,这些都是一些无关紧要打东西,大致浏览即可,接下来就主要看我们调用的方法,就能找到主线了!
Handler我们经常调用的有:obtain…,sendMsg…,post…remove…new Handler(callback),挨着看就是,首先封装消息打方法obtain…
进入源码我们看obtain都做了些什么操作:
我们可以发现在方法里

本文详细解析了Handler的源码实现,包括Handler、Message、MessageQueue和Looper的工作原理。介绍了Handler如何发送和处理消息,以及在面试中常问的关于Handler的几个问题,如Handler、Looper和MessageQueue的数量限制。同时,阐述了不同线程间如何通过Handler进行通信。
最低0.47元/天 解锁文章
527

被折叠的 条评论
为什么被折叠?



