获取ServiceManager代理对象
include <binder/IServiceManager.h>
defaultServiceManager() // IServiceManager BpServiceManager
Service 组件的注册过程(TestService)
defaultServiceManager->addService(String16(TEST_SERVICE_NAME), new TestService())
Client与Server一次进程间通信过程
- 封装进程间通信数据
- 发送和处理BC_TRANSACTION
- 发送并处理 BR_TRANSACTION
- 发送和处理BC_REPLY
- 发送和处理BR_REPLY
封装进程间通信数据
在这里需要将服务接口描述符BnTestService对象打包。
writeStrongBinder() 将BnTestService封装成flat_binder_ohject结构体。
主要函数在Parcel.cpp的flatten_binder()
status_t flatten_binder(const sp<ProcessState>& /*proc*/,
const sp<IBinder>& binder, Parcel* out){
flat_binder_object obj;
obj.flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS;
if (binder !=