looper中还有一个特殊的概念,那就是Threadlocal,threadLocal并不是线程,他的作用是可以再每个线程中存储数据,我们知道,Handler创建的时候会采用当前线程的looper来构造消息循环系统,那么Handler内部如何获取到当前线程的Looper呢,这就要用到ThreadLocal了,Threadlocal可以再不同线程中互不干扰的存储并提供数据,通过ThreadLocal可以轻松获取每个线程的Looper,当然需要注意的是线程是默认没有Looper的,如果需要使用Handler就必须为线程创建Looper。
我们经常提到的主线程,也叫UI线程,他就是ActivityTHread,ActivityTHread被创建的时候就会初始化Looper,这也是主线程中默认可以使用Handler的原因。
本文摘自安卓开发艺术探索,任玉刚的作品