一、分层架构总览二、详细时序图Mermaid三、逐步骤对象生命周期步骤①-②触摸 → Launcher 启动步骤③-④AMS 决策 → Zygote fork步骤⑤Zygote 子进程 → ActivityThread.main()步骤⑥-⑦AMS 响应接入 → 发 ClientTransaction步骤⑧-⑨App 进程收包 → TransactionExecutor 分发步骤⑩核心——Activity 对象诞生步骤⑪-⑬HomeActivity.onCreate() → 构建 View Tree步骤⑭-⑯onCreate 返回后 → 窗口可见四、关键对象生命周期对象创建时机创建者生存期Looper (主线程)ActivityThread.main()Looper.prepareMainLooper()进程存活期间ActivityThreadActivityThread.main()new ActivityThread()进程存活期间Application第一个 Activity 启动前makeApplicationInner()进程存活期间HomeActivityperformLaunchActivity()ClassLoader.newInstance()直到 onDestroy() 后 GCPhoneWindowactivity.attach()Policy.makeNewWindow()与 Activity 同生命周期DecorViewsetContentView()PhoneWindow.installDecor()与 Activity 同生命周期View Tree (所有子View)setContentView()LayoutInflater.inflate()与 DecorView 同生命周期ViewRootImplhandleResumeActivity()ViewRootImpl 构造直到 Window 被移除五、Binder 通信总结整个流程中发生了3 次关键 Binder IPC次数方向调用作用1Launcher → AMSstartActivity()发起启动请求2App → AMSActivityThread.attach()报告进程就绪3AMS → AppscheduleTransaction(ClientTransaction)下发 LaunchActivityItem ResumeActivityItem六、你的 HomeActivity 代码在这个链路中的位置// HomeActivity.java —— 在步骤⑫被调用 public class HomeActivity extends Activity { Override protected void onCreate(Bundle savedInstanceState) { // ← Activity.performCreate() 第8595行调用 super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); // ← 触发 PhoneWindow 构建 View Tree findViewById(R.id.entry_side_mirr).setOnClickListener(v - startActivity(new Intent(this, SideMirrActivity.class))); // 点击后又从步骤②重新走一遍 findViewById(R.id.entry_whl).setOnClickListener(v - startActivity(new Intent(this, WhlActivity.class))); findViewById(R.id.entry_hvac).setOnClickListener(v - startActivity(new Intent(this, HvacActivity.class))); } }你的代码里每一行findViewById都依赖于LayoutInflater.inflate()已经在setContentView()→PhoneWindow.setContentView()中完成了activity_home.xml的全部 View 构建。这些 View 在onCreate中已经存在于内存并挂载到 DecorView 树下但此时屏幕还没渲染——渲染要等到onResume之后的makeVisible()performTraversals()。