小说明:冷启动在 Android 端分为两部分:
1. 进程启动 — application相关执行完毕
2. 第一个activity展示 — AdvertActivity进入activity栈,init,create,onCreate,onResume后展示。
这次我们分析并着手尝试优化下第一个部分
先看一下profile的耗时统计
第一阶段:LoadedApk.makeApplication newApplication阶段,排除系统必须处理的流程,咱们自己可控部分又根据业务阶段拆分成3个小阶段在这个阶段会执行application的attachBaseContext和Application的构造方法
因为tinker的热修复机制,可以看到,这个阶段99.99%耗时都是在tinker的初始化和相关热修复准备上
application构造方法里,就YogaUtil.getProcessName() (第二列最后一个方法),获取进程名称,几毫秒是咱们自己的操作。
第二阶段:Activity.Thread.installContentProviders 创建contentProviders阶段,我们在这个阶段可以看到很多的contentProviders
YogaWorkManagerInitializer.onCreate
MobProvider.onCreate
Senso