Android Service深入分析
2010-05-14 16:24:00 来源:WEB开发网addService(String16("xxx0"), new xxx0Service());
addService(String16("xxx1"), new xxx1Service());
…
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();//闭合循环框架
}
2.1 Native Service
Native Service是在系统Init阶段通过Init.rc脚本建立的服务。
首先来看看一个例子mediaserver@main_mediaserver.cpp的建立过程。
int main(int argc, char** argv)
{
sp
sp
LOGI("ServiceManager: %p", sm.get());
AudioFlinger::instantiate();
MediaPlayerService::instantiate();
CameraService::instantiate();
AudioPolicyService::instantiate();
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
我们将代码向下展开了一层,更能看到事物的本质。
int main(int argc, char** argv)
{
sp
sp
defaultServiceManager()->addService(String16("media.audio_flinger"), new AudioFlinger());
…
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
(1)服务进程建立了ProcessState对象,并将给对象登记在进程的上下文中。
(2)建立一个新AudioFlinger对象,并将对象登记Service Manager Service中。
(3)开始就收请求,处理请求,应答这个循环闭合框架。
2.2 Android Service
Androids service是系统二阶段(Init2)初始化时建立的服务。
Android的所有服务循环框架都是建立SystemServer@(SystemServer.java)上。在SystemServer.java中看不到循环结构,只是可以看到建立了init2的实现函数,建立了一大堆服务,并AddService到
更多精彩
赞助商链接