在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();