发布时间:2025-12-09 18:50:49 浏览次数:4
Android Framework或应用程序中所需要的主要API都是以系统服务的形式提供的。
例如获取终端的当前位置,读取感应器的数值,拨打电话等。
一、Android服务的种类
Android系统中有两类服务
一类是系统服务,由Framework提供
另一类是应用程序服务,应用程序开发者继承并实现Service类开发出来的
图
应用程序服务是Android四大组件的一种, 通过继承Android SDK的Service类实现
可以通过以下两种方式使用这些服务
<1> startService
只是想着后台启动一个执行特定任务的服务
应用程序服务分为
Local Service
创建服务的客户端与服务在同一进程,本地服务只能在创建该服务的应用程序内部使用,
当应用程序终止时,本地服务也一同终止,不论使用哪种方法启动的服务(startService或者bindService)
Remote Service
创建服务的客户端与服务不在同一个进程,客户端要使用服务必须通过IPC机制。
AIDL用于约束两个进程间的通信规则,共编译器生成代码。用来实现Android设备上两个进程间的IPC。
图
1. 系统服务分类
本地系统服务 使用C++编写,运行在Libraries层,主要是AudioFlinger, SerfaceFlinger
JAVA系统服务 如ActivityManagerService LocationService, 想要使用JAVA系统服务必须使用能够与各服务通信的Local Manager对象。
五、运行系统服务
1. Android系统启动时,init进程已经启动了这些系统服务,使用系统服务时不需要启动它, 直接调用getSystemService使用即可。
2. 系统服务由MediaServer, SystemServer两个系统进程运行。
图
3. MediaServer的运行过程
图
4. SystemServer的运行过程
图
六、Android Service Framework, Binder Driver概要及相关术语
图