Binder通信——用户空间C/C++层架构与Java层对接点概述

一,Java层主要通过下述API访问Binder:
Binder——————————Java层Binder对象
BinderProxy——————Java层服务端Binder在客户端进程中的代理对象
IHelloService————— 业务接口
HelloService——————服务进程中业务接口实现类
BpHelloServiceProxy——服务进程业务实现类在客户端(远端)进程中的服务代理对象(远程代理对象)

类图关系如下(本页图片过小,看不清,请在浏览器新标签页中查看图片):

这里写图片描述

二,C/C++层访问Binder驱动API:

IInterface,BpInterface(继承INTERFACE),BnInterface(继承INTERFACE)———业务相关的公共类
BnHelloService(实现onTransaction方法),HelloService(实现业务相关的方法) —服务进程中业务实现类
BpHelloService———————————————————————————客户端进程的业务实现类

类关系图如下(本页图片过小,看不清,请在浏览器新标签页中查看图片):

这里写图片描述

三,Java与C/C++对节点:

Java层与C/C++层主要有三个地方的对节点:
这里写图片描述

具体细节如下图所示(本页图片过小,看不清,请在浏览器新标签页中查看图片):
这里写图片描述

图中分为三大块来分别描述Java层与C/C++层Binder通信框架;在蓝色方框中描述了Java层APP应用调用Java层Binder接口,通过Native层的对节点与C/C++层的Binder通信框架对接,然后调用C/C++层Binder通信框架的相关API,最终通过IPC层进入内核Binder驱动,到达目标进程实现进程间通信;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章