安卓性能测试(一):启动时间

策略:

关于app的启动时间测试,主要关注以下三种场景:

  • 1 首次启动:应用首次启动(冷启动)所花费的时间
  • 2 非首次启动:应用非首次启动(热启动)所花费的时间
  • 3 应用界面切换:应用界面内切换所花费的时间

测试方法:

方法一:

通过监控logcat中的 ActivityManager 的相关数据。
1 打开ddms,设置过滤条件:
设置“by Log Tag”为:ActivityManager
在这里插入图片描述
2 打开相关app,然后就能在log中打印的Displayed的信息,根据应用名称记录启动时间数据。
图中指出的就是进入 packageName/activityName 的时间
在这里插入图片描述
3 有些应用启动会经历2个阶段,如先进入指引页,再进入主页,那么启动时间位累加2个display打印的时间值。具体根据实际测试中选择的策略

方法二:

通过adb命令: adb shell am start -W -n packageName/activityName
1 首先获得当前界面包名和类名:
adb shell dumpsys activity | grep mFocusedActivity
在这里插入图片描述
2 然后使用adb命令获取“ThisTime”的值就可以了。(这里的TotalTime是指将activity从activity栈中取出的总时间)
在这里插入图片描述
注意:这个方法在某些手机上需要root权限

结果对比:

通过对比,可以发现两种方法获取的时间是一样的,因为am是ActivityManager的缩写,两种方法的底层实现是一样的。
在这里插入图片描述
不过,am start方法如果this time大于10s,就会显示time out,而logical里面能显示正常的时间:
在这里插入图片描述

原理:

那么这个时间到底是怎么得来的,这里先讲下activity的生命周期:
一个activity真正开始运行,会先经过三个方法:onCreate(),onStart(),onResume()。

在这里插入图片描述
那么我们写个demo app,并建立这三个方法(打印三个方法的名称,并打印执行方法的时间戳

在这里插入图片描述

打开app就可以看到log中将三个方法的执行时间戳打印出来,并能看到ActivityManager的启动时间
在这里插入图片描述
差不多就是onCreate到onResume的时间。那么我们在onResume方法中延迟2s,验证一下结果:
在这里插入图片描述
log:
在这里插入图片描述
这次很清楚了,onResume方法这次执行了2s多,并且在打印出end的时间戳后,display给出了activity的启动时间。
说明,am start 的启动时间给出的是activity的onCreate方法开始执行 到 onResume方法执行结束的时间。也就是说,是activity完全启动的时间。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值