hanlder的机制

最近查看了hanlder的源码,关于这块handler的机制介绍网络上已经有很多大神说的很清楚了,具体可以看网络上其他大神的handler研究,我这里是看了别人的研究文章自己提出了一个问题,handler是借助了looper loop()方法的任务就是在loop关联的queue中遍历,如果取到了message,就调用该message的target属性的dispatchMessage()方法。那么LOOPer又是怎么来的,我查了下源码


hanlder的机制_第1张图片

发现LOOPER最后放在ThreadLocal里面,那么ThreadLocal是什么呢,继续往下看

打开这个Threadlocal类,发现有个GET方法


hanlder的机制_第2张图片


hanlder的机制_第3张图片

这个T就是LOOPER对象,它每次都放在当前线程的ThreadLocal属性下,threadlocal的作用就是

每个线程都需要使用他,并且各自使用各自的。这样就保证的每一个子线程每次更新都能对应找到一个LOOPER。

这是我在查源码的发现的,如有不对,大神们可以给我指正,感谢

你可能感兴趣的:(hanlder的机制)