Handler底层实现机制

handler.sendMessage方法要向消息队列添加Message,它保证消息队列正确的机制是:

通过当前currentThread获取到当前线程对应的ThreadLocalMap,从ThreadLocalMap获取到当前Looper对象。每个Looper对象在Loop的时候创建了消息队列并在Looper对象里保存了当前消息队列。

sendMessage获取到Looper,然后就能知道要发送给哪个消息队列。

此外,在Message里用 target保存了当前handler对象的引用,因此在Looper的for循环里检测到有Message的话则调用Message的target.dispatchMessage,dispatchMessage则调用了handler的handleMessage。

你可能感兴趣的:(Handler底层实现机制)