ADB计算启动时间
通过ADB命令可以统计应用的启动时间,指令如下所示。
- ➜ ~ adb shell am start -W com.xys.preferencetest/.MainActivity
- Starting:
- Intent {
- act=android.intent.action.MAIN
- cat=[android.intent.category.LAUNCHER] cmp=com.xys.preferencetest/.MainActivity }
- Status: ok
- Activity: com.xys.preferencetest/.MainActivity
- ThisTime: 1047
- TotalTime: 1047
- WaitTime: 1059
- Complete
该指令一共给出了三个时间。
- ThisTime:最后一个启动的Activity的启动耗时。
- TotalTime:自己的所有Activity的启动耗时。
- WaitTime:ActivityManagerService启动App的Activity时的总时间(包括当前Activity的onPause()和自己Activity的启动)。
这三个时间不是很好理解,我们可以把整个过程分解,如下所示。
1.上一个Activity的onPause()——2.系统调用AMS耗时——3.第一个Activity(也许是闪屏页)启动耗时——4.第一个Activity的onPause()耗时——5.第二个Activity启动耗时。
ThisTime表示5(最后一个Activity的启动耗时)。TotalTime表示3、4、5总共的耗时(如果启动时只有一个Activity,那么ThisTime与TotalTime应该是一样的)。WaitTime则表示所有的操作耗时,即1、2、3、4、5所有的耗时。
每次给出的时间可能并不一样,而且应用从首次安装启动到后面每次正常启动,时间都会不同,区别在于系统是否要分配进程空间。
一般来说,可以使用脚本多次重复应用“启动—Kill—启动”过程并取其平均时间。
