AMI 即 ActivityManagerInternal, AM 本地系统服务接口,在system_server 内部使用,
作用是为了访问 AMS.
以下基于 API34 (Android UOS) 源码
1. AMI 源码
package android.app;
/**
* Activity manager local system service interface.
*
* @hide Only for use within the system server.
*/
public abstract class ActivityManagerInternal {
}
定义了需要访问 AMS 的一系列 API. 例如:
/** Starts a given process. */
public abstract void startProcess(String processName, ApplicationInfo info,
boolean knownToBeDead, boolean isTop, String hostingType, ComponentName hostingName);
2. AMI 实现类
在 AMS 里内部类 LocalService 实现
public final class LocalService extends ActivityManagerInternal
implements ActivityManagerLocal {
}
3. AMI 实现类对象 的 创建
mInternal = new LocalService();
4. AMI 实现类对象 被添加到 LocalServices
LocalServices.addService(ActivityManagerInternal.class, mInternal);
5. AMI 的使用
通过统一接口 LocalServices.getService 获取.
例如在 ATMS 中
public void onActivityManagerInternalAdded() {
synchronized (mGlobalLock) {
mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
}
}
6. 拓展
类似的有 ActivityTaskManagerInternal、PackageManagerInternal、UserManagerInternal、UriGrantsManagerInternal 等等
v这些都是仅在 system_server 进程里使用.
网友评论