课程名称:BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师:DocMike
课程内容
Handler 的四大组件和运作机制
Android 中处理异步消息的 Handler 解决了线程通信问题,以及线程切换问题,通常包括以下四部分:
- Handler,消息的真正处理者, 具备获取消息、发送消息、处理消息、移除消息等功能。
- Looper,负责从消息队列中循环的取出消息然后把消息交给 Handler 处理。
- MessageQueue,以队列的形式对外提供插入和删除的工作, 其内部结构是以双向链表的形式存储消息的。
- 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人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦