因为刚配置了Vscode跳转插件,尝试不借助ai,强行硬追一波源码
Activity 启动流程(冷启动链路,AMS / ATMS → WMS)
bash
Activity
startActivityAsCaller
ActivityTaskManagerService
startActivityAsCaller
execute
ActivityStarter
execute
executeRequest
startActivityUnchecked
startActivityInner
resumeFocusedTasksTopActivities
RootWindowContainer
resumeFocusedTasksTopActivities
resumeHomeActivity
startHomeOnTaskDisplayArea
startHomeActivity
resumeTopActivityUncheckedLocked
Task
resumeTopActivityUncheckedLocked
resumeTopActivityInnerLocked
TaskFragment
resumeTopActivityInnerLocked
resumeTopActivity
startProcessAsync
ActivityTaskManagerService
startProcessAsync
ActivityManagerInternal::startProcess
ActivityManagerService
LocalService extends ActivityManagerInternal
startProcess
startProcessLocked
ProcessList
startProcessLocked
startProcess
Process start
Process
start
usesWebviewZygote startWebView
usesAppZygote appZygote.getProcess().start
ZygoteProcess
start
startViaZygote
ZygoteConnection
processCommand
Zygote
forkAndSpecialize
handleChildProc
zygoteInit
ZygoteInit
zygoteInit
applicationInit
RuntimeInit
applicationInit
findStaticMain
m = cl.getMethod("main", new Class[] { String[].class });
ActivityThread
main(String[] args)
4.3 可渲染 Mermaid classDiagram
#mermaid-svg-nIfsTL17G5qRkZQu{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nIfsTL17G5qRkZQu .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nIfsTL17G5qRkZQu .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nIfsTL17G5qRkZQu .error-icon{fill:#552222;}#mermaid-svg-nIfsTL17G5qRkZQu .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nIfsTL17G5qRkZQu .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nIfsTL17G5qRkZQu .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nIfsTL17G5qRkZQu .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nIfsTL17G5qRkZQu .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nIfsTL17G5qRkZQu .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nIfsTL17G5qRkZQu .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nIfsTL17G5qRkZQu .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nIfsTL17G5qRkZQu .marker.cross{stroke:#333333;}#mermaid-svg-nIfsTL17G5qRkZQu svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nIfsTL17G5qRkZQu p{margin:0;}#mermaid-svg-nIfsTL17G5qRkZQu g.classGroup text{fill:#9370DB;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-nIfsTL17G5qRkZQu g.classGroup text .title{font-weight:bolder;}#mermaid-svg-nIfsTL17G5qRkZQu .cluster-label text{fill:#333;}#mermaid-svg-nIfsTL17G5qRkZQu .cluster-label span{color:#333;}#mermaid-svg-nIfsTL17G5qRkZQu .cluster-label span p{background-color:transparent;}#mermaid-svg-nIfsTL17G5qRkZQu .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nIfsTL17G5qRkZQu .cluster text{fill:#333;}#mermaid-svg-nIfsTL17G5qRkZQu .cluster span{color:#333;}#mermaid-svg-nIfsTL17G5qRkZQu .nodeLabel,#mermaid-svg-nIfsTL17G5qRkZQu .edgeLabel{color:#131300;}#mermaid-svg-nIfsTL17G5qRkZQu .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-nIfsTL17G5qRkZQu .label text{fill:#131300;}#mermaid-svg-nIfsTL17G5qRkZQu .labelBkg{background:#ECECFF;}#mermaid-svg-nIfsTL17G5qRkZQu .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-nIfsTL17G5qRkZQu .classTitle{font-weight:bolder;}#mermaid-svg-nIfsTL17G5qRkZQu .node rect,#mermaid-svg-nIfsTL17G5qRkZQu .node circle,#mermaid-svg-nIfsTL17G5qRkZQu .node ellipse,#mermaid-svg-nIfsTL17G5qRkZQu .node polygon,#mermaid-svg-nIfsTL17G5qRkZQu .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nIfsTL17G5qRkZQu .divider{stroke:#9370DB;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu g.clickable{cursor:pointer;}#mermaid-svg-nIfsTL17G5qRkZQu g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-nIfsTL17G5qRkZQu g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-nIfsTL17G5qRkZQu .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-nIfsTL17G5qRkZQu .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-nIfsTL17G5qRkZQu .dashed-line{stroke-dasharray:3;}#mermaid-svg-nIfsTL17G5qRkZQu .dotted-line{stroke-dasharray:1 2;}#mermaid-svg-nIfsTL17G5qRkZQu #compositionStart,#mermaid-svg-nIfsTL17G5qRkZQu .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #compositionEnd,#mermaid-svg-nIfsTL17G5qRkZQu .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #dependencyStart,#mermaid-svg-nIfsTL17G5qRkZQu .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #dependencyStart,#mermaid-svg-nIfsTL17G5qRkZQu .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #extensionStart,#mermaid-svg-nIfsTL17G5qRkZQu .extension{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #extensionEnd,#mermaid-svg-nIfsTL17G5qRkZQu .extension{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #aggregationStart,#mermaid-svg-nIfsTL17G5qRkZQu .aggregation{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #aggregationEnd,#mermaid-svg-nIfsTL17G5qRkZQu .aggregation{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #lollipopStart,#mermaid-svg-nIfsTL17G5qRkZQu .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu #lollipopEnd,#mermaid-svg-nIfsTL17G5qRkZQu .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-nIfsTL17G5qRkZQu .edgeTerminals{font-size:11px;line-height:initial;}#mermaid-svg-nIfsTL17G5qRkZQu .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nIfsTL17G5qRkZQu .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nIfsTL17G5qRkZQu .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nIfsTL17G5qRkZQu :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Activity
ContextThemeWrapper
ContextWrapper
Context
Instrumentation
ActivityThread
ApplicationThread
ClientTransactionHandler
ATMS
AMS
WMS
ActivityStartController
ActivityStarter
RootWindowContainer
ActivityTaskSupervisor
ActivityRecord
WindowProcessController
ProcessList
ClientLifecycleManager
ClientTransaction
LaunchActivityItem
ResumeActivityItem
ViewRootImpl
WindowManagerGlobal