android binder

1580阅读 0评论2014-06-09 hubertx
分类:Android平台

http://blog.csdn.net/bathinbreeze/article/details/8989105

Native层和Java层的关键点:

  1. native层中,client会有一个BpBinder引用,Server会有一个BBinder引用来实现通信;
  2. Java层中,client会有一个BinderProxy对象,server会有一个JavaBBinder对象来负责通信,但实质的通信实现是基于native层,Native层又基于Binder驱动的

针对Java层C/S交互的5个步骤的总结:

  1. 初始化Java层Binder框架,是为了减少在以后通信过程中初始化的时间
  2. C/S获得ServiceManager的Java远程接口过程,实际上就是获得ServiceManagerProxy,为Java层提供C/S与SM通信的对象
  3.  XXXService的接口定义和启动过程,添加自己到SM中,实际上是为XXXService对象创建与SM通信的BinderProxy对象(就是步骤2),和创建为与client通信的JavaBBinder对象
  4. Client获得XXXService的Java远程接口过程,实际上是为client创建与SM通信的BinderProxy对象(就是步骤2),和创建与XXXService通信的BinderPorxy对象
  5. Client通过Java远端接口使用XXXService提供的服务,实际上是利用client的BinderProxy对象与XXXService的JavaBBinder对象通信,达到client使用服务的目的

虽然Binder机制的代码层层嵌套,逻辑复杂,但Binder机制的实质就是实现不同进程间的通信,通过SM来管理跨进程的服务;理解这一点,就可以理清Binder的核心:通信的实现最终都会由Binder的驱动实现,Native层和Java层的复杂构架,是出于2方面考虑:

  1. Native层的构架是为了提供统一的接口,并把业务层和逻辑层分开
  2. Java层的构架是为应用层提供统一的接口,把内部实现封装起来,隔开了底层实现和上层应用
上一篇:Android 智能指针原理
下一篇:java 抽象类 接口