Chinaunix首页 | 论坛 | 博客
  • 博客访问: 972550
  • 博文数量: 109
  • 博客积分: 1751
  • 博客等级: 上尉
  • 技术积分: 1817
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-31 22:37
文章分类

全部博文(109)

文章存档

2014年(9)

2013年(21)

2012年(48)

2011年(31)

分类: Android平台

2014-06-09 17:16:43

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层的构架是为应用层提供统一的接口,把内部实现封装起来,隔开了底层实现和上层应用
阅读(1517) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~