http://blog.csdn.net/bathinbreeze/article/details/8989105
Native层和Java层的关键点:
-
native层中,client会有一个BpBinder引用,Server会有一个BBinder引用来实现通信;
-
Java层中,client会有一个BinderProxy对象,server会有一个JavaBBinder对象来负责通信,但实质的通信实现是基于native层,Native层又基于Binder驱动的
针对Java层C/S交互的5个步骤的总结:
-
初始化Java层Binder框架,是为了减少在以后通信过程中初始化的时间
-
C/S获得ServiceManager的Java远程接口过程,实际上就是获得ServiceManagerProxy,为Java层提供C/S与SM通信的对象
-
XXXService的接口定义和启动过程,添加自己到SM中,实际上是为XXXService对象创建与SM通信的BinderProxy对象(就是步骤2),和创建为与client通信的JavaBBinder对象
-
Client获得XXXService的Java远程接口过程,实际上是为client创建与SM通信的BinderProxy对象(就是步骤2),和创建与XXXService通信的BinderPorxy对象
-
Client通过Java远端接口使用XXXService提供的服务,实际上是利用client的BinderProxy对象与XXXService的JavaBBinder对象通信,达到client使用服务的目的
虽然Binder机制的代码层层嵌套,逻辑复杂,但Binder机制的实质就是实现不同进程间的通信,通过SM来管理跨进程的服务;理解这一点,就可以理清Binder的核心:通信的实现最终都会由Binder的驱动实现,Native层和Java层的复杂构架,是出于2方面考虑:
-
Native层的构架是为了提供统一的接口,并把业务层和逻辑层分开
-
Java层的构架是为应用层提供统一的接口,把内部实现封装起来,隔开了底层实现和上层应用
阅读(1523) | 评论(0) | 转发(0) |