Message消息
,说到消息就需要说到MessageQueue消息队列
,那么有了消息和消息队列,肯定少不了Looper消息泵
,最后如何运行起来呢,就用到了Looper.loop()消息泵的开关
,好了到这里Handler基本就明了了。Handler
发送消息都是通过sendMessage()
或者post()
方法,最后调用的都是enqueueMessage
方法。ThreadLocal
,ThreadLocal中有一个静态内部类ThreadLocalMap
,他为每个线程都维护一个table数组
,其中通过int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1);
和int i = key.threadLocalHashCode & (len-1);
产生一个ThreadId作为key,value就是我们发出的消息。
如果对ThreadLocal感兴趣可以看看这篇文章
ThreadLocal MessageQueue.enqueueMessage()
向消息队列添加消息,MessageQueue.next()
从消息队列里取消息。