Android中的Handle底层原理
先上结论:
一个小小的Handle,就能看出你对Android底层源码理解的深浅。
老规矩,如果你能看懂我上面画的这张草图,这篇文章你可以直接跳过!
开干!
1、先对Handle在Android系统中是如何发挥作用的做一个小结:
1)每一个线程,包括UI主线程,有一个ThreadLocalMap变量:threadLocals,想要使用
Handler,第一步就是要调用Looper.prepare(),它的作用是创建一个Looper对象,以Looper对象
的ThreadLocal变量sThreadLocal为键,以Looper对象为value保存在线程的threadLocals中
2)创建handler对象时,会调用Looper.myLooper()方法,从handler所在线程中获取1中创建的
Looper对象
3)Looper.loop()使消息循环动起来
2、源码解读:
1)、说到Handler就要联系到Thread和其MessageQueue;
2)、一个Thread只有一个Looper,Looper.prepare()即是建立当前线程、消息队列和Looper的对应关系。
private static void pr