前言
Binder,作为Android中重要的通讯机制,虽然我们可以在不理解的情况下使用,但如果能理解透彻,在以后的开发中我们将受益良多。理解Binder,完全可以看作我们在修年内功,特别是Binder机制中牵扯到Driver,Hative层,Framework层的内容,如果我们对整个流程熟悉,那么我们不仅对Android的通讯机制,而且还有整个Android框架的了解将会上一个台阶。
Binder系列文章一共有5篇,是本人在学习Binder过程中的笔记,在写Binder系列文章前,本人阅读了相关的书籍和网上的资料,并查阅了相应的源码。但是,错误难免。如果有疏漏或者想探讨,希望阅读本文的你能畅所欲言,我们共同进步!
大纲
-
- Android与Linux通信机制的比较
-
Binder在Service服务中的作用
-
Binder通信机制流程
- Android与Linux通信机制的比较
-
-
数据结构分析
-
驱动分析
-
-
-
Service Manager成为守护进程
-
Server和Client获得ServiceManager的远程接口
-
Server向SM注册服务
-
Client从SM获得服务
-
-
-
初始化framework层Binder框架
-
C/S获得ServiceManager的Java远程接口过程
-
XXXService的接口定义和启动过程,添加自己到SM中
-
Client获得XXXService的Java远程接口过程
-
Client通过Java远端接口使用XXXService提供的服务
-
-
-
任务管理器的例子:服务端PMService,客户端PMClient
-
碰到的问题及解决办法
-
一些参考资料
这里感谢这些资料的作者们,向你们致敬!
- Android Bander设计与实现 - 设计篇 http://blog.csdn.net/universus/article/details/6211589
- 非常详细的介绍了Binder的数据结构,适合对Binder有一定了解的朋友阅读。
- Android进程间通信(IPC)机制Binder简要介绍和学习计划 http://blog.csdn.net/luoshengyang/article/details/6618363
- 老罗的文章,强烈推荐。一共有5篇文章,非常全面的介绍了Binder机制的Native层和Java层通信流程,并配有实例。缺点是:数据结构和驱动并没有系统的分析,如果对这部分不了解,直接看老罗Binder系列的文章也许会产生困扰。建议先看“Android Bander设计与实现 - 设计篇”理解数据结构后,再看。
- 驱动部分:
- Binder驱动源码分析 http://blog.sina.com.cn/s/blog_8d13a22b0100wovf.html
- Android之binder驱动个人学习小结http://www.2cto.com/kf/201208/148770.html
- binder驱动-交互时的传输实现(二) http://www.360doc.com/content/12/0103/15/7891085_176884758.shtml
- 对binder驱动的理解http://www.360doc.com/content/12/0102/14/7891085_176654687.shtml
- 在看这几篇文章时,我是互相结合看的,看完后,就大概对驱动有了一定的理解,结合“Android Bander设计与实现 - 设计篇”才写了:
- 《深入理解Android卷1》和《深入理解Android卷2》
- 卷1写的非常不错,介绍了Binder的Native层,思路清晰;卷2介绍Binder的Framework层,结构混乱,就要差很多了。
- Android深入浅出之Binder机制 http://zhongcong386.blog.163.com/blog/static/13472780420111010105931680/
- 感觉作者是按照《深入理解Android卷1》来写的,两者可以结合来看。
- Binder学习总结_native(1)http://blog.csdn.net/ljsbuct/article/details/7991838
- 如标题,是一个简单的Native总结,适合看完《深入理解Android卷1》后,理清思路。