Android AMS——创建APP进程(五)

         接上一篇,在 ActivityTaskSupervisor 中会判断进程是否存在,如果进程不存在,则会创建进程,执行 startProcessAsync() 方法。如果进程存在,则执行 realStartActivityLocked() 方法。在APP 的启动时,进程是不存在的。所以我们先来分析一下进程不存在的情况。

一、创建进程

1、ActivityTaskManagerService

源码位置:/frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java

startProcessAsync

void startProcessAsync(ActivityRecord activity, boolean knownToBeDead, boolean isTop, String hostingType) {
    try {
        if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) {
            Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "dispatchingStartProcess:" + activity.processName);
        }
        // 发送消息以启动进程,以避免在持有ATMS锁的情况下调用AMS时可能出现的死锁。
        final Message m = PooledLambda.obtainMessage(ActivityManagerInternal::startProcess,
                    mAmInternal, activity.processName, activity.info.applicationInfo, 
      

你可能感兴趣的:(FW开发基础,android)