[Android]对ServiceManager的理解
通讯节点: /dev/binder 何时打开:一般在ProcessState::self() 何时用:透过BBinder, BpBinder 管理者BpServiceManager , BnServiceManager 它们会通过IPCThreadState::transact()等进行操作, handle在这里指定。结构binder_transaction_data 用来读写数据。 remote()->transact()就是BpBinder->transact(), 再到IPCThreadState::transact() BpBinder不在继承关系里,只是打包数据。 Binder 通讯Thread何时起来: 某个service死掉,要如何知道: ServiceManager的handle 是0 int main(int argc, char** argv) { sp<ProcessState> proc(ProcessState::self()); sp<IServiceManager> sm = defaultServiceManager(); MediaPlayerService::instantiate(); ProcessState::self()->startThreadPool(); IPCThreadState::self()->joinThreadPool(