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

本文详细介绍了APP启动时间的测试策略,包括首次启动、非首次启动及界面切换的时间测量。提供了两种测试方法,一是通过logcat监控ActivityManager数据,二是使用adb命令获取启动时间。并解释了启动时间的计算原理,涉及activity的生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

策略:

关于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完全启动的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值