WEB开发网      婵傜晫鐝總钘夊瀻娴滎偓绱掓担鐘垫畱娑撯偓娴犺棄鍨庢禍顐fЦ閹存垳婊戦惃鍕娴犺棄濮╅崝娑崇幢鐠囧嘲鍨庢禍锟� ---閿曪拷
开发学院手机开发Android 开发 Android Service深入分析 阅读

Android Service深入分析

 2010-05-14 16:24:00 来源:WEB开发网 閵嗭拷閸戝繐鐨€涙ぞ缍�婢х偛銇囩€涙ぞ缍�閵嗭拷  閸忚櫕鏁炵拫閿嬪€嶉柨瀵告畱瀵邦喖宕�
核心提示:addService(String16("xxx0"), new xxx0Service());addService(String16("xxx1"), new xxx1Service());…ProcessState::self()->startThreadPool();

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 proc(ProcessState::self());

sp sm = defaultServiceManager();

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 proc(ProcessState::self());

sp sm = defaultServiceManager();

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到

上一页  1 2 3 4  下一页

Tags:Android Service 深入

编辑录入:coldstar [复制链接] [打 印]
赞助商链接