美文网首页
Android Activity的启动过程-9 之 AMI

Android Activity的启动过程-9 之 AMI

作者: 行走中的3卡 | 来源:发表于2023-08-20 20:54 被阅读0次

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 进程里使用.

相关文章

网友评论

      本文标题:Android Activity的启动过程-9 之 AMI

      本文链接:https://www.haomeiwen.com/subject/sufemdtx.html