1. audioserver启动
frameworks/av/media/audioserver/audioserver.rc
执行main_audioserver.cpp
AudioFlinger::instantiate();//初始化AudioFlinger
AudioPolicyService::instantiate();//初始化AudioPolicyService
AudioFlinger::instantiate()并不属于AudioFlinger的内部类,而是BinderService类的一个实现,AudioFlinger,AudioPolicy都继承自这个Binder的服务类,
frameworks/native/include/binder/BinderService.h
static void instantiate() {
publish(); }
static status_t publish(bool allowIsolated = false,
int dumpFlags = IServiceManager::DUMP_FLAG_PRIORITY_DEFAULT) {
sp<IServiceManager> sm(defaultServiceManager()); //new一个实例
return sm->addService(String16(SERVICE::getServiceName()), new SERVICE(), allowIsolated,
dumpFlags); //把实例添加到ServiceManager中
}