Android系统中如何添加一个自己的service?前段时间找工作,被面试官问到这样一个问题,怎样在系统里面添加一个service。我只知道个大概,自己还没有去加过。这次有空,就试着自己添加,并记录下来。我是在android 7.0系统添加的,不同系统代码位置可能会有差异。
1.设计接口
在/frameworks/base目录下新建一个文件夹addservice, 在addservice目录下新建Android.mk和/java/android/mymodule/test, 可以根据自己的需要命名。
/frameworks/base/addservice/java/android/mymodule/test目录下存放封装接口的java文件和对应的aidl文件。
/frameworks/base/addservice/目录下的Android.mk如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, java)
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE := mymodule
include $(BUILD_JAVA_LIBRARY)
下面就是写这个接口了
在/frameworks/base/addservice/java/android/mymodule/test下新建一个aidl文件,命名为ITestManager.aidl,我这里就写一个测试的方法,没什么实际意义,内容为:
package android.mymodule.test;
/**
* {@hide}
*/
interface ITestManager {
void testMethod();
}
对应的TestManager.java,TestManager只是一个操作类,真正的实现是在TestService.java:
package android.mymodule.test;
import android.util.Slog;
import android.os.RemoteException;
public class TestManager {
private final ITestManager mService;
public TestManager(ITestManager mService) {
//这里把ITestManager传进来,可以看看系统其它service,都是这样写的
this.mService = mService;
}
public void testMethod() {
try {
mService.testMethod();