Android Activity的启动过程-9 之 AMI

2023-08-20  本文已影响0人  行走中的3卡

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

上一篇 下一篇

猜你喜欢

热点阅读