class IInterface : public virtual RefBase //IInterface 继承RefBase
class ICameraService : public IInterface // ICameraService 继承 IInterface
////////////////////////////////////////////////////////////////////
template<typename INTERFACE>
class BnInterface : public INTERFACE, public BBinder //
BnInterface: 继承 ICameraService和BBinder :不同的service BnInterface继承不同的IService
class BnCameraService: public BnInterface<ICameraService> :
//////////////////////////////////////////////////////////////////
// BnCameraservice: public (BnInterface:public (IcameraService,BBinder))
class BnCameraService: public BnInterface<ICameraService> : // BnCameraService 继承了BnInterface<ICameraService>
class CameraService :
public BinderService<CameraService>, // instantiate()->publish()注册服务
public BnCameraService, //
CameraService 继承了BnCameraService
public IBinder::DeathRecipient,
public camera_module_callbacks_t
Bn onTransact() 在 ICameraservice中实现了一部分,在CameraService中onTransact()进行隐藏并扩充
CameraService 服务初始化
//Main_mediaServer.cpp
int main(int argc __unused, char** argv){
…
sp<ProcessState> proc(ProcessState::self());
sp<IServiceManager> sm = defaultServiceManager(); ALOGI("ServiceManager: %p", sm.get()); AudioFlinger::instantiate(); //media服务 MediaPlayerService::instantiate(); //初始化资源管理服务 ResourceManagerService::instantiate(); //初始化Camera服务 CameraService::instantiate();
AudioPolicyService::instantiate(); SoundTriggerHwService::instantiate(); RadioService::instantiate(); registerExtensions(); //线程池 ProcessState::self()->startThreadPool(); IPCThreadState::self()->joinThreadPool();}