一、简介
对于 Android 系统,一般是从 java 层到 native 层,再到 kernel 驱动层,形成一个完整的软件架构。Android 系统中的 Binder IPC 通信机制的整体架构也是如此,Java 和 C++ 层都定义有同样功能的供应用程序使用的 Binder 接口。然而 Java 层中 Framework 层的 ServiceManager 类与 Native 层的功能并不完全对应,Framework 层的 ServiceManager 类的实现最终是通过 BinderProxy 传递给 Native 层来完成的。
ServiceManager:通过 getIServiceManager 方法获取的是 ServiceManagerProxy 对象,ServiceManager 的 addService 和 getService 实际工作都交由 ServiceManagerProxy的相应方法来处理。
ServiceManagerProxy:其成员变量 mRemote 指向 BinderProxy 对象,ServiceManagerProxy 的 addService 和 getService 方法最终是交由 mRemote 来完成。
ServiceManagerNative:其方法 asInterface() 返回的是 ServiceManagerProxy 对象,ServiceManager 便是借助 ServiceManagerNative 类来找到 ServiceManagerProxy。
Binder:其成员变量 mObject 和方法 execTransact() 用于 native 方法。
BinderInternal:内部有一个 GcWatc