Android13硬追startActivity启动流程

因为刚配置了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

相关推荐
千里马学框架4 天前
Service服务绑定对进程adj影响及常见绑定错误
android·智能手机·性能优化·程序员·framework·性能·安卓失业
Android小码家11 天前
Vehicle 实战 自定义属性+测试demo
java·c++·framework·vhal·vehicle
Together_CZ25 天前
LLM-as-a-Verifier: A General-Purpose Verification Framework——一种通用验证框架
llm·framework·agent·verification·verifier·一种通用验证框架·llm-as-a-
EatFan1 个月前
JunoYi 框架实践:Spring Boot 项目为什么拆成 framework、module、server 三层?
java·spring boot·后端·framework·module·模块化·junoyi
千里马学框架1 个月前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
千里马学框架2 个月前
安卓系统性能优化高级实战开发专题--开机,app冷启动优化
android·智能手机·性能优化·framework·性能·开机优化·app冷启动优化
千里马学框架2 个月前
安卓开机性能优化:如何安全高效地裁剪 SystemService
android·智能手机·framework·wms·手机·性能·车载
gxgldyh2 个月前
Android Framework源码解析(九):App进程诞生全流程——从AMS请求到Zygote fork源码深度拆解
android·framework·zygote·android 启动流程·android app创建流程
阿pin3 个月前
Android随笔-Framework
android·framework