亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第13天 Handler 的四大組件和運作機制

標簽:
Android

课程名称:BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师:DocMike

课程内容

Handler 的四大组件和运作机制

Android 中处理异步消息的 Handler 解决了线程通信问题,以及线程切换问题,通常包括以下四部分:

  1. Handler,消息的真正处理者, 具备获取消息、发送消息、处理消息、移除消息等功能。
  2. Looper,负责从消息队列中循环的取出消息然后把消息交给 Handler 处理。
  3. MessageQueue,以队列的形式对外提供插入和删除的工作, 其内部结构是以双向链表的形式存储消息的。
  4. Message,代表一个行为what或者一串动作 Runnable , 每一个消息在加入消息队列时,都有明确的目标Handler。

Handler 的运作机制大概经历以下几个过程:

  • 当 Handler 发送消息时,会将此消息加入消息队列 MessageQueue 中。
  • Looper 负责去遍历消息队列并且将队列中的消息分发给对应的 Handler 进行处理。
  • 在 Handler 的 handleMessage() 方法中处理该消息,这就完成了一个消息的发送和处理过程。

对照上面的过程查看 Handler 源码:

  • 在创建 Handler 对象时,有一段异常提示,调用 Looper.prepare()方法来创建Looper对象,来保证Handler发送的消息添加到MessageQueue中。
  • Looper管理消息就是通过prepare()方法中ThreadLocal这个容器来存放Looper对象,通过ThreadLocal这个容器可以确保每一个线程获取的Looper是唯一的。在looper的构造方法中创建looper对象的时候MessageQueue也被创建好了就能保证looper对象中持有MessageQueue对象这样Handler、looper、消息队列三者捆绑。

课程收获

对于 Handler 的理解,不能只停留在使用层面上,还要去了解它的实现原理。这样不仅能在面试时加分,以后在设计自己的框架时,也可以参考它的设计思想。

點擊查看更多內容
2人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
12
獲贊與收藏
17

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消