@startuml

participant ":ActivityManagerService" as AMS
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java '/
participant "mActivityTaskManager\n:ActivityTaskManagerService" as ATMS
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java '/
participant "mActivityStartController\n:ActivityStartController" as ctler
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/wm/ActivityStartController.java '/
participant ":ActivityStarter" as starter
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java '/
participant ":ActivityStackSupervisor" as SUP
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/wm/ActivityStackSupervisor.java '/
participant ":ActivityMetricsLogger" as logger
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/wm/ActivityMetricsLogger.java '/
participant "mTargetStack\n:ActivityStack" as stack
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/wm/ActivityStack.java '/
participant "mRootActivityContainer\n:RootActivityContainer" as rootCtnr
/' 源码树路径: /frameworks/base/services/core/java/com/android/server/wm/RootActivityContainer.java '/

[-> AMS : startActivity
activate AMS

AMS -> ATMS : startActivity
activate ATMS

ATMS -> ATMS : startActivityAsUser
activate ATMS
note left: line: 1032

ATMS -> ATMS : startActivityAsUser
activate ATMS
note left: line: 1040

    ATMS -> ctler : checkTargetUser
    activate ctler
    return userId

    ATMS -> ctler : obtainStarter
    activate ctler
    return starter对象

    ATMS -> starter : execute
    activate starter
        starter -> starter : startActivityMayWait
        note right: line: 1144\n233行
        activate starter
        /' starter.startActivityMayWait()中的调用内容 '/
            starter -> logger : notifyActivityLaunching(intent)
            activate logger
            return

            starter -> SUP : resolveIntent
            activate SUP
            return ResolveInfo

            starter -> SUP : resolveActivity
            activate SUP
            return ActivityInfo

            starter -> starter : startActivity
            activate starter
            note right: line: 568
                starter -> starter : startActivity
                activate starter
                note right: line: 613\n326行
                /' starter.startActivity()中的调用内容 '/

                    starter -> logger : notifyActivityLaunching(intent)
                    activate logger
                    return



                    starter -> starter : startActivity
                    activate starter
                    note right: line: 1396\n50行
                        starter -> starter : startActivityUnchecked
                        note right: line: 1474\n284行
                        /' starter.startActivityUnchecked()中的调用内容 '/

                        activate starter
                            starter -> stack : startActivityLocked
                            activate stack
                            return
                            alt mDoResume == true
                            starter -> rootCtnr : resumeFocusedStacksTopActivities
                            activate rootCtnr
                            return
                            end
                        return START_SUCCESS
                    return result

                    starter -> logger : notifyActivityLaunched(res, outActivity[0])
                    activate logger
                    return

                return res
            return getExternalResult(mLastStartActivityResult)

            starter -> logger : notifyActivityLaunched(res, outRecord[0])
            activate logger
            return

        return res
    return int

return int

return int

return int

[<-- AMS : int

@enduml