您的位置:首页 > 其它

Handler消息机制 笔记

2021-12-25 14:11 68 查看

这是笔记,没有源码分析和详细过程,只有自己总结出来的重点,源码分析看参考资料,前辈写的很好。

 

 

  • 一个线程,一个Looper,一个MessageQueue,多个Handler
  • MessageQueue单链表结构
  • 使用ThreadLocal机制保证一个线程一个Looper:https://www.cnblogs.com/--here--gold--you--want/p/15730088.html
  • 记得在子线程中调用Looper.prepare创建Looper,调用Looper.loop()开始循环,调用Looper.quie()结束循环
  • Android主线程的Looper不用prepare,在ActivityThread就已经创建好了。
  • 因为Looper.loop()是在子线程中调用,所以Handler的处理逻辑也就在子线程中进行了。

MessageQueue的next方法中,没有消息时,会调用nativePollOnce方法,这是一个natice方法,会调用到linux那边的一些有关线程阻塞之类的,会休眠,不会卡死!!然后有消息进来,在enqueueMessage方法中会调用nativeWake唤醒。

 

参考资料:

Android开发艺术探索:https://www.kancloud.cn/alex_wsc/android_art/1828638

面试:https://www2.imgeek.org/article/825358871

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: