启动时间同样也遵循2-5-8原则,所谓2-5-8原则就是当用户能够在2秒以内启动应用进入第一帧,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择退出这个app或者卸载该app。因此启动时间对用户的使用行为起到至关重要的作用。
采用录像的方法录制应用启动过程,然后通过人工数帧或者程序数帧的方式计算启动时间。
1. 通过 logcat 中 ActivityManager 的相关数据获取,使用 DDMS 直接查看
这个信息在 Activity 窗口完成所有的启动之后,首次绘制的时候输出,也就是如果 activity 栈里有这个 Activity,再启动(如从多任务管理列表切回)则不会输出该信息。
log中的时间包括系统从开始处理启动Activity的时间到完成运行layout和draw函数的时间,不包括点击icon到系统接收到消息的时间。测试关注的其实是用户体验的启动时间,上面log不能满足我们的需求。
2. logcat 指令
启动应用后通过抓取 log 查看
3. 通过 am 启动 Activity 查看启动时间
adb shell am start -W –n <packageName>/<activityName> 单位ms
如果只关心某个应用自身启动耗时,参考 TotalTime;如果关心系统启动应用总耗时,参考 WaitTime;如果关心应用有界面 Activity 启动耗时,参考 ThisTime。
4. 使用 screenrecord 命令
(1)adb shell screenrecord --bugreport /sdcard/launch.mp4
(2)启动app后,等待页面显示完成,结束录屏,拷贝到电脑使用能够逐帧查看的视频播放器播放(mac上quicktime就可以,win下可以用kmplayer),并按帧播放
5. 通过 ActivityManager 轮询实现获取启动时间
1. adb shell am force-stop package (杀掉应用进程)
2. adb shell input keyevent 3 back返回退出应用
1. 有源码:打开源码在 AndroidManifest.xml 查看包名
2. 有安装包:aapt dump badging xx.apk
3. 已安装在手机:
(1)使用 adb logcat | grep START 命令启动应用查看
(2)pm list package 列出所有应用
(3)启动apk,使用 adb shell logcat | grep ActivityManager 查看
原文:https://www.cnblogs.com/sharef/p/13739702.html