Android中如何计算 App 的启动时间
adb命令统计
应用第一次启动
也就是我们常说的冷启动,这时候你的应用程序的进程是没有创建的. 这也是大部分应用的使用场景.用户在桌面上点击你应用的 icon 之后,首先要创建进程,然后才启动 MainActivity
使用以下命令行可以获取启动时间
adb shell am start -W packagename/绝对路径下的MainActivity
例如我的包名为com.xx.myapplication
,我的启动页是SplashActivity
那么我应该在Terminal中输入的命令为:
adb shell am start -W com.xx.myapplication/com.xx.myapplication.SplashActivity
记得运行安装应用之后再进行测试…
- ThisTime : ThisTime 表示一连串启动 Activity 的最后一个 Activity 的启动耗时
- TotalTime : 启动一连串的 Activity 总耗时.(有几个Activity 就统计几个),表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用 Activity pause 的耗时。也就是说,开发者一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时
- WaitTime : 应用进程的创建过程 + TotalTime,就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间
- 在第①个时间段内,AMS 创建 ActivityRecord 记录块和选择合理的 Task、将当前Resume 的 Activity 进行 pause
- 在第②个时间段内,启动进程、调用无界面 Activity 的 onCreate() 等、 pause/finish 无界面的 Activity
- 在第③个时间段内,调用有界面 Activity 的 onCreate、onResume
总结:
如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime
Android 中如何计算 App 的启动时间?
作者:Gracker