读书频道 > 网站 > 网页设计 > 深入理解Android:卷III
2.3.4MessageQueue总结
15-08-21    下载编辑
收藏    我要投稿   

本文所属图书 > 深入理解Android:卷III

本书在逻辑上分为4个部分Part 01(第1-2章):这是本书的基础部分,首先介绍了Android源码环境的搭建、编译和调试;然后讲解了Android进程间通信与任务调度的工具Binder与MessageQueue 这两项基础工作是深入研究立即去当当网订购
想不到,一个小小的MessageQueue竟然有如此多的内容。在后面分析Android输入系统时,会再次在Native层和MessageQueue碰面,这里仅是为后面的相会打下一定的基础。
 
现在将站在一个比具体代码更高的层次来认识一下MessageQueue及其伙伴。
 
1. 消息处理的大家族合照
 
MessageQueue只是消息处理大家族的一员,该家族的成员合照如图2-5所示。
 
结合前述内容可从图2-5中得到:
 
Java层提供了Looper类和MessageQueue类,其中Looper类提供循环处理消息的机制,MessageQueue类提供一个消息队列,以及插入、删除和提取消息的函数接口。另外,Handler也是在Java层常用的与消息处理相关的类。
 
 
MessageQueue内部通过mPtr变量保存一个Native层的NativeMessageQueue对象,mMessages保存来自Java层的Message消息。
 
NativeMessageQueue保存一个Native层的Looper对象,该Looper从ALooper派生,提供pollOnce和addFd等函数。
 
Java层有Message类和Handler类,而Native层对应也有Message类和MessageHandler抽象类。在编码时,一般使用的是MessageHandler的派生类WeakMessageHandler。
 
在include/media/stagfright/foundation目录下也定义了一个ALooper类,它是供stagefright使用的类似Java消息循环的一套基础类。这种同名类的产生,估计是两个事先未做交流的团队的人编写的。
 
2. MessageQueue处理流程总结
 
MessageQueue核心逻辑下移到Native层后,极大地拓展了消息处理的范围,总结后有以下几点:
 
MessageQueue继续支持来自Java层的Message消息,也就是早期的Message加Handler的处理方式。
 
MessageQueue在Native层的代表NativeMessageQueue支持来自Native层的Message,是通过Native层的Message和MessageHandler来处理的。
 
NativeMessageQueue还处理通过addFd添加的Request。在后面分析输入系统时,还会大量碰到这种方式。
 
从处理逻辑上看,先是Native的Message,然后是Native的Request,最后才是Java的Message。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站