BnXXX:指binder native,给server用,通过AIDL在C++测实现。
BpXXX:binder proxy,给client用
IBinder:binder接口的基类,接口定义了进程间交互的协议,通过transact方法向远端的IBinder对象发出调用,远端对象通过Binder.OnTransact()方法响应接收到的调用
IBinder、BBinder、BpBinder:
IBinder是对binder的抽象,即binder接口,它有BBinder、BpBinder两个子类,
BBinder是服务器中的binder实体,负责接收远程函数的调用和数据,并在Binder 驱动内部生成binder节点,即内核中的binder实体。
BpBinder是客户端中的binder引用,保存着目标服务的handle信息,即服务端的binder实体的引用信息,用于查询内核中的binder节点,并同binder实体通信。
IInterface、BnInterface、BpInterface:
IInterface提供asBinder()方法,返回一个IBinder引用,提供类型转换功能,将服务或服务代理类转换为IBinder类型。实际的类型转换有BnInterface、BpInterface完成
BnInterface用在服务端,将服务类转换为IBinder
BpInterface用在客户端,将服务代理类转换为IBinder。
Parcel:在服务与服务代理间进行binder IPC通信时,Parcel类负责保存binder IPC通信数据,包括:C语言基本数据类型和binder对象。