美文网首页
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