Android之消息处理机制(二)Handler的本质-Message和Looper到底是什么?
16lz
2021-01-24
目录
Android之消息处理机制(二)
一、MessageQueue
二、Looper
2.1 消息池
2.2 自醒机制
Android之消息处理机制(二)
以下皆为干货,比较干,需要读者细细理解。
前面(一)已经解释了Handler的基本机制了,下面来概括一下本质。
一、MessageQueue
MessageQueue其实就是一个when来排序的一个优先级队列。(是一个链表结构)
二、Looper
2.1 消息池
Looper循环从消息队列中取需要处理的message,并交给Handler处理,处理完后清理并缓存到消息池中(下次通过Message.obtain()可以获取消息池中的Message,如果你重新new Message()是不是浪费了一点内存了,需要重新要求系统去分配内存,然后不用了需要释放内存,而消息池的思想类似于缓存,用完后缓存一些Message,等到需要用的时候直接去取缓存的Message就可以了,节省了内存分配释放等的时间和损耗)。
2.2 自醒机制
自醒机制的要点:1)如果Looper取不到消息,就会进入等待状态(不是多线程中的wait,而是通过底层编码的方式去实现等待的效果,但不阻塞主线程。),不过具体的底层机制及实现细节我也不太清除,还需要读者自行去翻阅相关书籍去查看。
2)一旦Handler向消息队列中发送消息,就唤醒处于等待状态的Looper。
更多相关文章
- Android中TouchEvent触摸事件机制
- Android消息机制源码解读
- 从源码角度分析Activity、Window和DecorView的关系
- "lianren"项目解析(一)
- 从源码的角度分析Android中的Handler机制的工作原理
- Android消息模型
- 高效显示Bitmap+listview冲突解决+图片内存缓存+硬盘缓存
- Android中hybrid开发的基础知识
- Android(安卓)IntentService的使用与源码解析