handler机制详细解释
来源:互联网 发布:淘宝卖家联系电话 编辑:程序博客网 时间:2024/06/05 08:31
andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UIthread 通常就是main thread,而Android启动程序时会替它建立一个MessageQueue。
1.Handler创建消息
每一个消息都需要被指定的Handler处理,通过Handler创建消息便可以完成此功能。Android消息机制中引入了消息池。Handler创建消息时首先查询消息池中是否有消息存在,如果有直接从消息池中取得,如果没有则重新初始化一个消息实例。使用消息池的好处是:消息不被使用时,并不作为垃圾回收,而是放入消息池,可供下次Handler创建消息时使用。消息池提高了消息对象的复用,减少系统垃圾回收的次数。消息的创建流程如图所示。
2.Handler发送消息
UI主线程初始化第一个Handler时会通过ThreadLocal创建一个Looper,该Looper与UI主线程一一对应。使用ThreadLocal的目的是保证每一个线程只创建唯一一个Looper。之后其他Handler初始化的时候直接获取第一个Handler创建的Looper。Looper初始化的时候会创建一个消息队列MessageQueue。至此,主线程、消息循环、消息队列之间的关系是1:1:1。
Handler、Looper、MessageQueue的初始化流程如图所示:
3.Handler处理消息
UI主线程通过Looper循环查询消息队列UI_MQ,当发现有消息存在时会将消息从消息队列中取出。首先分析消息,通过消息的参数判断该消息对应的Handler,然后将消息分发到指定的Handler进行处理。
子线程通过Handler、Looper与UI主线程通信的流程如图所示。
0 0
- handler机制详细解释
- Anroid中的事件处理Handler与事件分发机制举例子详细解释
- 详细全面了解handler机制
- 举例子解释Handler消息传递机制
- Linux Bottome Half Handler 机制详细解析
- Android Handler Looper机制详细分析
- Android 的事件传递机制,详细解释
- Android中签名机制详细解释
- Android消息机制------Handler机制的原理(超详细)
- handler解释
- Android消息处理机制--Handler 超详细通俗的解读
- handler的处理机制感觉很详细很好
- Android消息机制(Handler、MessageQueue、Looper)详细介绍
- Handler详细
- Handler机制
- Handler机制
- handler机制
- handler机制
- nsjson to nsdictionary
- js函数4-闭包
- Android面试题(四)
- 工作中最全最常用的正则表达式
- 消息人士称,Google考虑将Swift作为安卓的主要编程语言
- handler机制详细解释
- c++避免内存泄漏
- Socket通信
- RPC和HDFS文件读写(下载上传)过程
- Word Ladder问题 BFS广度优先遍历
- LeetCode|Power of three
- 入门Android开发--第一行代码--笔记系列(广播)
- 练习21:函数的返回值
- java面试基础知识总结(一)