Native层ServiceManager类图
2020-06-17 14:54:45 25 举报
Native层ServiceManager类图
作者其他创作
大纲/内容
BnServiceManager
+onTransact()
IPCThreadState
-mProcessState : ProcessState-mIn : Parcel-mOut : Parcel
+sefl() : IPCThreadState+transact()-talkWithDriver()-waitForResponse() : Parcel
BBinder
#onTransact()+transact()-localBinder() : BBinder
IBinder
+transact()+localBinder() : BBinder+remoteBinder() : BpBinder
1
IPCThreadState的实例也是采用单例模式实现的,它是正在与Binder驱动进行交互的类
IServiceManager
+addService()+getService()+checkService()
RefBase
ProcessState
-mDriveFD : int-mHandleToObject : vector<handle_entry>
+sefl() : ProcessState+getContextObject() : sp<IBinder>+getStrongProxyForHandle() : sp<IBinder>-lookupHandleLocked() : handle_entry*
Struct handle_entry{ IBinder* binder; // BpBinder RefBase::weakref_type* refs;}
IInterface
+asBinder() : IBinder
BpRefBase
-mRemote : IBinder
#remote() : IBinder
BpInterface是一个模板类,同时继承了BpRefBase和INTERFACE,这里的INTERFACE是模板。像IServiceManager,IMediaPlayerService等Server都是通过继承模板类是实现的
BnInterface
N
BpInterface
从Android 7.0开始移除了BnServiceManager,直接由service_manager.c处理
BpBinder
-mHandle : int
+transact()+handle() : int+remoteBinder() : BpBinder
BpServiceManager
收藏
收藏
0 条评论
回复 删除
下一页