app应用启动时间检测

2017-01-01 10:46

启动时间的测试方法

  •  adb shell am start -W packagename/activity
  • ddms adb logcat监控

ddms adb logcat

  • 创建过滤条件如下:
    • Fliter Name:Display
    • By Log Tag:ActivityManager

Paste_Image.png

  • 启动应用,查看DDMS打印的Display消息,根据应用名称记录启动时间数据。计算从点击应用到应用显示主页的的时间差。如下图所示,红线对应的时间即为该次启动时间。(有些应用启动会经历2个阶段,如连接服务器和进入主页,启动时间为累加2个display打印的时间值) Log信息样例如截图:

Paste_Image.png

应用启动场景分析

应用第一次启动-冷启动

  • 也就是我们常说的冷启动,这时候你的应用程序的进程是没有创建的. 这也是大部分应用的使用场景.用户在桌面上点击你应用的 icon 之后,首先要创建进程,然后才启动 MainActivity.
  • 这时候adb shell am start -W packagename/MainActivity 返回的结果,就是标准的应用程序的启动时间(注意 Android 5.0 之前的手机是没有 WaitTime 这个值的):
adb shell am start -W com.media.painter/com.media.painter.PainterMainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.media.painter/.PainterMainActivity }
Status: ok
Activity: com.media.painter/.PainterMainActivity
ThisTime: 355
TotalTime: 355
WaitTime: 365
Complete
  • 如果只关心某个应用自身启动耗时,参考TotalTime;
  • 如果关心系统启动应用耗时,参考WaitTime;
  • 如果关心应用有界面Activity启动耗时,参考ThisTime。

应用非第一次启动-热启动

  • 如果是你按Back键,并没有将应用进程杀掉的话,那么执行上述命令就会快一些,因为不用创建进程了,只需要启动一个Activity即可。这也就是我们说的应用热启动。

参考更详细的资料