外观
启动慢,应该从哪里下手?
标准回答
先分清冷、温、热启动并定义测量终点,再用 Trace 找出阻塞首屏的工作;优化关键路径,最后用同条件多次测量验证。
关键机制
- 冷启动需要创建进程并初始化;温启动复用部分状态;热启动通常恢复已有页面。不同场景不能混在一起比较。
- 重点看进程创建、ContentProvider、Application、Activity、布局加载、首帧渲染,以及同步 Binder、磁盘 IO、锁等待。
- 策略包括按需初始化、拆依赖、把合适任务放后台、ViewStub 延迟非首屏内容,以及针对热点代码使用 Baseline Profiles。
通俗例子
如果首屏只需要账号和基础设备状态,就不要在首帧之前同步加载完整历史记录。先让必要界面可用,再加载不影响首次交互的数据。
易混淆点
TTID 是首次显示时间,TTFD 是完整可用时间。自定义“手指按下到首帧”指标包含输入链路,不能直接等同官方启动统计。
参考资料
内容来源
- Android 技术札记 · 原条目
startup