Android平台——Binder机制
Android平台——Binder机制
由代码来补充部分:
int main(int argc, char** argv)
{
sp
proc(ProcessState::self());
sp sm = defaultServiceManager();
LOGI("ServiceManager: %p", sm.get());
AudioFlinger::instantiate();
MediaPlayerService::instantiate();
CameraService::instantiate();
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
sp
proc(ProcessState::self()),这一行代码会建立ProcessState对象,一个进程只有唯
一的一个ProcessState对象,而ProcessState类的作用是来打开/dev/binder设备。这也
就说明了一个问题,一个进程只不可能同时存在多个对/dev/binder的操作。
[pic]
sp sm =
defaultServiceManager(),这一行代码要做的事情参见上图。1、创建一个BpBinder。
2、由BpBinder对象创建BpServiceManger对象。(为什么要采取如此不自然的方式,可
以看一下这两个对象继承的基类)。完成这一步骤的最重要的作用在于以后对于IServi
ceManager对象的方法的调用,都将会由其子类BpServ