外观
如何理解从图标点击到首帧的启动链路?
标准回答
典型路径是 Launcher 发起启动请求,经 Binder 到 system_server,ATMS 处理 Activity 和任务栈,相关进程管理逻辑在需要时请求 Zygote 创建应用进程。应用通过 ActivityThread 与系统建立联系,在主线程处理绑定应用、组件初始化和 Activity 生命周期。
页面创建后,ViewRootImpl 驱动 View 的测量布局与绘制;硬件加速路径会涉及 RenderThread 和 GPU。应用生成的缓冲被显示系统消费,SurfaceFlinger 与 HWC 协调合成、提交并最终显示。
这不是所有启动都严格执行的线性清单:已有进程、任务复用、启动窗口和过渡动画会改变路径。定位时分别看请求到进程、进程到页面、页面到首个有效帧的等待。
追问与回答
Application.onCreate 之前一定没有业务代码吗
不是。类初始化、Application 构造和 attachBaseContext,以及启动路径上的 ContentProvider 初始化都可能更早执行。不能只盯 Application.onCreate。
ActivityThread 是不是一个 Java Thread 子类
它是应用主线程的管理入口和调度对象,并不靠继承 Thread 来代表主线程。按实际类定义和调用链解释即可。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q017