关于android:进程间通信IPC与Binder机制原理

57次阅读

共计 1370 个字符,预计需要花费 4 分钟才能阅读完成。

1, Intent 隐式用意携带数据

2, AIDL(Binder)

3, 播送 BroadCast

4, 内容提供者 ContentProvider

5,Messager(外部通过 binder 实现)

6, 文件共享

7,socket

——————————————–Binder 底层原理 —————————————-

Binder 是一种过程间通信机制,它提供近程过程调用(RPC)性能;Binder 作为一个类,它能和不同过程之间进行通信。从英文字面上意思看,Binder 具备粘结剂的意思,那么它把什么货色粘结在一起呢?在 Android 零碎的 Binder 机制中,由一些零碎组件组成,别离是 Client、Server、Service Manager 和 Binder 驱动程序,其中 Client、Server 和 Service Manager 运行在用户空间,Binder 驱动程序运行内核空间。Binder 就是一种把这四个组件粘合在一起的粘结剂了,其中,外围组件便是 Binder 驱动程序了,Service Manager 提供了辅助治理的性能,Client 和 Server 正是在 Binder 驱动和 Service Manager 提供的基础设施上,进行 Client-Server 之间的通信。Service Manager 和 Binder 驱动曾经在 Android 平台中实现好,开发者只有依照标准实现本人的 Client 和 Server 组件就能够了。

总结一下,Android 零碎 Binder 机制中的四个组件 Client、Server、Service Manager 和 Binder 驱动程序的关系如下图所示:

1. Client、Server 和 Service Manager 实现在用户空间中,Binder 驱动程序实现在内核空间中 2. Binder 驱动程序和 Service Manager 在 Android 平台中曾经实现,开发者只须要在用户空间实现本人的 Client 和 Server 3. Binder 驱动提供设施文件 /dev/binder 与用户空间交互,Client、Server 和 Service Manager 通过 open 和 ioctl 文件操作函数与 Binder 驱动程序进行通信 4. Client 和 Server 之间的过程间通信通过 Binder 驱动程序间接实现 5. Service Manager 是一个守护过程,用来治理 Server,并向 Client 提供查问 Server 接口的能力 至此,对 Binder 机制总算是有了一个理性的意识。

RPC 代码是近程调用的办法名,RPC 数据是办法的参数. handle 是对应服务向 ServiceManager 注册的索引值. binder 协定规定了是发送还是接收数据以及数据格式等内容.

举例:

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

RPC 代码是 getSystemService, RPC 数据则是 Context.TELEPHONY_SERVICE, rpc 层生成这些数据, ipc 层将这些数据与 handle,binder 协定打包并经 binder 驱动传输到服务端, 服务端解析这些数据从而实现过程间的通信.

正文完
 0