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。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容