我们在做app耗电量测试时,重点关注的是待机时的耗电情况,那么影响待机耗电量的因素有哪些呢,本文对最近的思考和实践进行了简单的总结。
首先安卓中的定时操作
安卓中定时功能使用AlarmManager实现,这个AlarmManager里持有一个wakelock对象,
从名字就可以看出,wakelock是一个唤醒锁,安卓就是通过这个锁保证在闹钟唤醒时我们的操作做完,不至于立即又恢复到待机状态。
wakelock也可以在代码中申请和使用。下图是使用耗电量检测工具GSam Monitor进行的监控结果截图。
GSam Monitor对app使用的wakelock进行了统计,在进行耗电量测试时,我们可以通过这里
分析后台的操作是否符合我们的预期,拿助手项目来说,在待机时使用wakelock的只有alarmmanager,从需求角度分析,我们每天有1个配置文件
的请求和2类通知的请求是定时操作的,那么当我待机一天后,会看到wakelock详情中的alarmmanager数字增加了3,如果数字不是3,就可能是
开发有些其他的实现或者bug,就需要进行跟进了。
监听的各种广播(安卓的Broadcast Receiver机制)
广播(Broadcast)既可能是系统发出的,也可能是app自定的,所以我们在测试耗电量时要遍历app注册所有广播
网络条件影响
有些app会有些预下载的操作,在闹钟触发了后进行预下载,与下载有关的操作当然与网络环境有关,这里需要考虑以下几种网络环境状态
wifi且网络状态良好
数据网络且网络状态良好
弱网络情况,这种情况又分为信号较差导致的传输速率较慢的情况,手机在wifi和数据网络持续切换情况,网络的丢包率高导致不断地重试情况。
弱网络的模拟可以作为单独一个点来调研
**系统资源情况 **
在待机时,不光被测app有活动,其他app也能会有活动,如果其他app活动时资源不足,系统很可能进行资源回收,被测app的服务很可能被杀掉或重启,这也是影响耗电量测试结果的一个重要因素。