MediaPlayerService的代码位于frameworks/base/media/mediaserver/main_mediaserver.cpp文件中:
只关心下面的5行代码, 下面一一对这个5行代码分析
int main(int argc, char** argv)
{
sp<ProcessState> proc(ProcessState::self());
sp<IServiceManager> sm = defaultServiceManager();
MediaPlayerService::instantiate();
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
分析sp<ProcessState> proc(ProcessState::self());
ProcessState类的在frameworks/base/include/binder/ProcessState.h中定义:
class ProcessState : public virtual RefBase
{
public:
static sp<ProcessState> self();
void setContextObject(const sp<IBinder>& object);
sp<IBinder> getContextObject(const sp<IBinder>& caller);
void setContextObject(const sp<IBinder>& object, const String16& name);
sp<IBinder> getContextObject(const String16& name,const sp<IBinder>& caller);
void startThreadPool();
typedef bool (*context_check_func)(const String16& name,const sp<IBinder>& caller,void* userData);
bool isContextManager(void) const;
bool