前提:
①暂定 app 的首页 activity 的 Displayed 时间 ≈ APP 启动时间。
②暂时忽略首次启动和非首次启动时间的区别。
③以下数据基本都在相同的环境下产生。
④以下数据都是在 genymotion 模拟器上产生。

可以通过这两个命令可以获取 activity 的展现时间。
a:【adb shell am start -W -n 包名/app 的首页 activity】
b:【adb logcat -c && adb logcat -s ActivityManager 】或【adb logcat -c && adb logcat -v time -s ActivityManager】

通过 a 命令得到的 TotalTime < 通过 b 命令计算后得到的 Time

b 命令的计算方式:
下面 log 中最后一行 time - 第一行 log 中的 time = 1892,而命令 a 获得的TotalTime < 1000

09-08 05:39:48.750 I/ActivityManager(  515): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=包名/启动页activity} from pid 694
09-08 05:39:49.518 I/ActivityManager(  515): Displayed 包名/启动页activity: +525ms
09-08 05:39:50.138 I/ActivityManager(  515): START u0 {cmp=包名/首页activity} from pid 4841
09-08 05:39:50.642 I/ActivityManager(  515): Displayed 包名/首页activity: +502ms

但素:
命令 a 获得的TotalTime 会 大于 命令 b 中首页 activity 的 Displayed 时间,这又是为啥呢?不懂,求伸手

目前接触到的一些 app 应用在启动的时候(人肉点击 app 图标启动)一般都会有多个 activity,是不是意味 app 启动时间通过 log 计算出来的更接近实际一些?


↙↙↙阅读原文可查看相关链接,并与作者交流