一、android 系统级 service 简要说明
android 系统级的服务包含了 Android Service 和 Native Service .
Android Service 也称作 Java Service ,是用 JAVA 语言编写的,实现在框架层。
Native Service 也称作 System Service ,是用 C++语言编写的,实现在 Runtime 层。
对于这两种 service 来说,两个对等 service 通讯都是利用 binder,只不过一种利用*.aidl,一种利用 IInterface 编写序
列化代码而已,本质是一样的,下面先介绍 native service 的编写及两个 native service 如何通讯的过程。
二、native service 的特点
A、因为底层核心服务是 Android 框架里最接近 Linux/Driver 的部分。为了充分发挥硬件设备的差异化特性,核心服务是让
上层 Java 应用程序来使用 Driver/HW Device 特色的重要管道。
B、在开机过程中,就可以启动核心服务 ( 例如汉字输入法服务等 ) ,让众多应用程序来共享之。
C、由于共享,所以能有效降低程序的大小及统一的接口变化 。
三.如何实现一个 Android service
3.1.
以
AlarmManagerService
为例进行说明
Java 层 服 务 顾 名 思 义 即 为 从 Java 层 提 供 的 服 务 , 它 与 C++ 层 的 服 务 不 同 之 处 在 于 其 服 务 进 程 的 运 行 由 系 统
( ServiceManager)统一维护。在文件 frameworks/base/services/java/com/android/server/SystemServer.java 中
我们可以看到以下代码:
AlarmManagerService alarm = new AlarmManagerService (context );
ServiceManager .addService (Context .ALARM_SERVICE , alarm );
这个操作在系统启动时完成,由 ServiceManager 负责创建服务进程并运行之。
在目录/frameworks/base/core/java/android/app 中 IAlarmManager.aidl 文件.
在目录 frameworks/base/services/java/com/android/server 中 AlarmManagerService 的 aidl 的实现类,
在目录 frameworks/base/services/java/com/android/server 增加 service 的实现文件.
3.2.实验测试添加 java 系统级服务步骤
3.2.1 增加 aidl 文件
在目录 frameworks/base/core/java/android/app 下增加中文件 IDvbService.aidl.
package android.app;
interface IDvbService {
int countTest(in int testvalue);
}