加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

android 下的 handler Message

发布时间:2020-12-15 07:15:55 所属栏目:Java 来源:网络整理
导读:研究了下android下的 handler? message 实现原理: ? ? new handler() 的时候? 从ThreadLocal里面 获取当前线程下的 Looper实例下的?MessageQueue 的引用 保存在 handler.mQueue属性里面 handler发送消息本质就是向此集合写值 ? 几个比较重要的节点 1.Looper

研究了下android下的 handler? message 实现原理:

? ? new handler() 的时候? 从ThreadLocal里面 获取当前线程下的

Looper实例下的?MessageQueue 的引用 保存在 handler.mQueue属性里面

handler发送消息本质就是向此集合写值

?

几个比较重要的节点

1.Looper.perpare() 实例化当前线程Looper对象

2. new handler()? ?选定 当前线程Looper对象?

3.handler.sendMessage() 发送消息? 本质是向?mQueue写值? 往选定的Looper存消息

4.Looper.loop()方法 取出当前线程Looper对象的消息执行相关操作 本质是从当前MessageQueue?取值

?

所以? 使用的时候应该注意

1.? new Handler 和 Looper.loop,Looper.prepare? 是同一个线程 ,sendMessage可以在任何线程??

2.? new Handler? 必须在 Looper.perpare()之后? (Looper 不存在 肯定不可能有??mQueue)

3. 主线程默认调用了Looper.loop,Looper.prepare? 其他线程需手动处理

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读