当前位置: 首页 > news >正文

从点击图标到 HomeActivity.onCreate() 完整链路

一、分层架构总览

二、详细时序图(Mermaid)

三、逐步骤对象生命周期

步骤①-②:触摸 → Launcher 启动

步骤③-④:AMS 决策 → Zygote fork

步骤⑤:Zygote 子进程 → ActivityThread.main()

步骤⑥-⑦:AMS 响应接入 → 发 ClientTransaction

步骤⑧-⑨:App 进程收包 → TransactionExecutor 分发

步骤⑩:核心——Activity 对象诞生

步骤⑪-⑬:HomeActivity.onCreate() → 构建 View Tree

步骤⑭-⑯:onCreate 返回后 → 窗口可见

四、关键对象生命周期

对象

创建时机

创建者

生存期

Looper (主线程)

ActivityThread.main()

Looper.prepareMainLooper()

进程存活期间

ActivityThread

ActivityThread.main()

new ActivityThread()

进程存活期间

Application

第一个 Activity 启动前

makeApplicationInner()

进程存活期间

HomeActivity

performLaunchActivity()

ClassLoader.newInstance()

直到 onDestroy() 后 GC

PhoneWindow

activity.attach()

Policy.makeNewWindow()

与 Activity 同生命周期

DecorView

setContentView()

PhoneWindow.installDecor()

与 Activity 同生命周期

View Tree (所有子View)

setContentView()

LayoutInflater.inflate()

与 DecorView 同生命周期

ViewRootImpl

handleResumeActivity()

ViewRootImpl 构造

直到 Window 被移除

五、Binder 通信总结

整个流程中发生了3 次关键 Binder IPC

次数

方向

调用

作用

1

Launcher → AMS

startActivity()

发起启动请求

2

App → AMS

ActivityThread.attach()

报告进程就绪

3

AMS → App

scheduleTransaction(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()

http://www.jsqmd.com/news/1094480/

相关文章:

  • 做自媒体,我是怎么用花生AI绕过剪辑这道坎的
  • 光刻胶用增韧剂及其合成技术:苯乙烯-丁二烯嵌段共聚物(SBS)、聚丙二醇二缩水甘油醚、聚甲基丙烯酸甲酯、聚四氢呋喃丙烯酸脂(上)
  • 2026ChatGPT、DEEPSEEK、豆包等AI搜索结果优化方法?
  • ChatGPT API文档隐藏功能曝光:`response_format`、`tool_choice`与`parallel_tool_calls`三大未公开能力(附实测代码库)
  • 无广告待办工具盘点,2026 多款清单软件优劣分析
  • 使用低代码爬虫软件自动化采集电商商品数据
  • 手把手教你用8款AI论文平台,极速搞定各类论文
  • 从 AI Agent 到具身智能:当智能开始拥有“身体”
  • AI 提速 3 倍,交付反而慢了?
  • DeepEval终极指南:5分钟掌握AI模型评估框架的完整配置
  • Android应用安全实践:SafetyNet机制解析与safetynett库集成指南
  • 网安新手攻克 Kali 难题大全!各类高频报错一次性给出解决方案,搞定环境问题稳步进阶,冲刺高薪安全赛道
  • 肌理质感艺术木纹与仿石铝单板轻盈演绎
  • 5分钟免费实现VR视频转2D的终极指南:VR-Reversal完整教程
  • QNAP TS-h2490FU 2U 全闪存架构在精密电子贴片制造网中
  • 轻量级图书馆借阅管理系统(读者管理、借还书记录)
  • Minecraft光影终极指南:用Revelation打造电影级方块世界
  • 从单点工具到全链路智能体:跨境电商自动化的下一步:2026全链路AI Agent架构深度拆解与落地指南
  • 【工具推荐】剁手前先泼盆冷水!我做了一个让你理性消费的神器——消费泼冷水计算器
  • 3个MeEdu二次开发实战技巧:从API调用到Hook扩展的深度定制指南
  • 5步掌握Res-Downloader:跨平台资源下载工具全面指南
  • Audition软件安装步骤(附安装包)Audition AU2026 超详细下载安装教程
  • CAD看图入门教程:4步掌握文件新建、打开、保存、关闭基础操作
  • 2026年小程序和网站到底有什么区别?企业到底该做哪个?
  • 【那黎宣大学主办 | IEEE出版 | 连续2届稳定EI检索,往届快至会后4个月EI检索 |支持latex和word双通道投稿】第三届图像处理、多媒体技术与机器学习国际学术会议(IPMML 2026)
  • Vulnhuntr架构解析:LLM与符号查找器如何革新自动化漏洞挖掘
  • 企业级Python自动化利器:we-work-bot企业微信机器人框架深度解析
  • UltraStar Deluxe终极指南:免费开源卡拉OK游戏的完全探索
  • (安装包)Windows OpenClaw 超详细安装!纯可视化操作,小白一遍装好
  • UltraStar Deluxe:终极免费卡拉OK唱歌游戏完全指南 [特殊字符]