刚刚开始写博客,这次讲一下我对android Binder机制的理解。

        Binder机制主要是为了进程间通信机制,也有别的方式(当然别的也没了解过),但是在android中用的最多的是Binder机制,在开始说Binder机制前先说一下这个机制的成员,1  ServiceManager(即是Client端也是Server端,一会儿会说), 2, Binder驱动, 3,系统服务(如MediaServer,是属于Server端)4,需要用服务的进程(Client端)。

这四个钟 1    2    4之间的无论是哪两个的通信都需要Binder驱动程序,都能解释Binder机制。

                                                                              

         android系统启动的时候会开启ServiceManager进程,并且将自己的handle设置成0(这样别的服务就可以通过handle找到ServiceManager),并打开Binder驱动,并映射内存地址(关于驱动程序我也不是很理解,现在只知道进程可以跟驱动程序打交道,说白了就是多个进程操作一个驱动程序来实现进程间通信),这个时候ServiceManager已经准备好了。

         比如某一个系统服务需要把自己注册到ServiceManager里面,由于ServiceManager和这个系统服务不在一个进程里面,需要先得到ServiceManager的代理,是实现了BpBinder(这个就是真正跟Binder驱动打交道的类,这里面有一些方法是跟Binder驱动打交道的)的代理类,用defaultServiceManager()方法得到ServiceManager的代理(handle为0,发消息的时候会带上handle的),然后执行注册的函数,而Binder驱动会把这个请求给ServiceManager(真正的)处理,然后把这个系统服务的信息保存起来,这就是一次进程间通信了。

         上面只是非常简单的描述了一下,实际的代码量是很大的,看的时候一定要先了解个大概再去看,不然看多长时间都看不懂的,如果需要掌握这些技术的朋友可以下一份android源码,然后结合 “深入理解android” 这本书看,会有更深的印象,当然需要c++的基础,没有的话先看一本c++的书,再去研究。

         可能有不对的地方请指出来,一起学习一起进步,有时间会继续写更详细的博客,希望继续关注。

更多相关文章

  1. Android(安卓)消息机制之Message
  2. android笔记--android的进程与线程
  3. [置顶] linux2.6驱动开发系列教程
  4. Android消息机制(二)
  5. android Application Component研究之ContentProvider
  6. Android消息处理机制(二):循环和消息队列的创建
  7. 【Android多线程】线程二三事
  8. Android账户同步备份机制
  9. Android中程序与Service交互的方式——综述

随机推荐

  1. 编写App的开场Activity
  2. Android 手机上安装并运行 Ubuntu 12.04
  3. android media 播放器
  4. Android瀑布流的实现
  5. Android中JNI的使用之HelloWorld
  6. (连载)Android 8.0 : 系统启动流程之Linu
  7. Android开发(九)| android手势开发
  8. android:动态缩放和旋转图像
  9. Android(安卓)textview字体颜色显示和图
  10. Android中的基础----如何获得LinearLayou