在Android中可以通过两种方式创建系统服务:
- 由SystemServer启动的系统服务,使用SystemServer线程资源,适合轻量级的服务,比如各种XMS服务;
- 占用独立进程,在系统启动时,由init进程拉起,比如SurfaceFlinger;
本文采用的是第一种方式。
自定义AssistantManagerService
参考AMS,命名为AssistantManager,功能只是打印一句日志。
首先,在 frameworks/base/core/java/android/app 中定义:
package android.app;
/**
*
* {@hide}
*/
interface IAssistantManager{
String testService(String msg);
}
这里需要注意,{@hide}注解必须带上,否则编译会报错!!!
其次,在 frameworks/base/core/java/android/app 下定义:
package android.app;
import android.annotation.SystemService;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.IBinder;
import android.os.RemoteException;
import android.annotation.Nullable;
import android.os.ServiceManager;
import android.util.Singleton;
@SystemService(Context.ASSISTANT_SERVICE)
public class AssistantManager{
private Context mContext;
/**
* @hide
*/
public AssistantManager() {
}
/**
* @hide
*/
public static IAssistantManager getService() {
return IAssistantManagerSingleton.get();