前言
内容导读:
启动优化的背景介绍->如何测量启动时间->启动优化工具选择->优雅获取方法耗时->异步优化原理介绍->异步优化最佳实践-启动器->延迟初始化方案->启动优化其它方案
启动优化介绍
日活上千万,几千万。
背景介绍
- 第一体验
- 八秒定律(70%用户流失)
启动分类
App startup time
冷启动
- 耗时最多,衡量标准
启动流程:clickEvent->IPC->Process.start->ActivityThread(main 方法,程序入口。消息循环,handler)->bindApplication(反射创建Application,调用生命周期,)->Activity LifeCycle->ViewRootImpl
热启动
最快
后台->前台
温启动
较快
lifeCycle
相关任务
冷启动之前
- 启动App
- 加载空白Window
- 创建进程
随后任务
- 创建Application
- 启动主线程
- 创建MainActivity
- 加载布局
- 布置屏幕
- 首帧绘制
优化方向
Application 和 Activity生命周期
总结
启动分类具体场景(重点)
启动阶段相关任务及优化方向
启动时间测量方式
ADB命令
adb shell am start -W -n 应用包名/首屏Activity全路径名
这个命令在不同手机下的输出不一样
vivo X9i
MI 8(分别是冷启动,热启动,温启动)