背景
手机在闲置状态时,电量仍然被消耗。其实为了避免耗尽电池的电量,一个闲置的设备很快就会进入睡眠状态,但仍然有App利用各种方式在悄悄耗电,比如:通过wakeLock持锁、Alarm唤醒、频繁自启动、调用wifi设备、调用Audio、调用GPS、调用动作传感器等方式,来保证手机在休眠状态下App的进程及相关服务不被杀掉,这些行为均会导致手机不同程度的电量损耗,影响用户体验。
动作传感器
一些用于监视设备动作的传感器,主要包括五种:加速传感器、陀螺仪传感器、重力传感器、线性加速传感器和旋转向量传感器。所有的动作传感器都会返回三个浮点数的值,应用通过调用相应的传感器监测设备状态,获取相应的信息。
动作传感器作用
动作传感器就是用于监测设备移动的,比如倾斜、摇动、旋转或摆动等都属于动作传感器的监测范围。这种设备的移动通常来源于用户输入的直接反应,其中包括游戏中虚拟的飙车、以及现实中设备的移动等。当手机在灭屏状态下保持一段时间后,系统会进入休眠,一些后台运行的任务就可能得不到正常执行,应用通过申请动作传感器,利用动作传感器的频繁调用来阻止系统进入休眠,保证应用在后台不被杀死。
测试方案
一、测试环境
硬件环境:荣耀Maigc2 8 128G
软件版本:EMUI 版本9.0.0
二、测试范围
本次测试选取了8款主流拍摄类App及版本:
应用名称 | 版本 |
---|---|
美图秀秀 | 8.6.6.1 |
BeautyCam美颜相机 | 9.0.20 |
B612咔叽 | 8.10.12 |
天天P图 | 6.3.1.2615 |
美拍 | 8.3.28 |
潮自拍 | 3.7.5.7 |
轻颜相机 | 2.5.0 |
快影 | 3.9.1.309102 |
三、操作步骤
1.安装并启动应用,正常遍历1分钟后,放置后台,灭屏1小时
2.执行adb bugreport> bugreport.zip,获取bugreport文件
3.通过分析bugreport(参考Battery Historian的搭建),统计里面动作传感器调用时长来判断
四、测试结果
测试结果显示快影在后台测试时间内持续占用Sensor未释放。美图秀秀、美颜相机、B612咔叽、天天P图、美拍、潮自拍、轻颜相机表现良好,未占用Sensor,同时也满足软件绿色联盟应用体验标准,是绿色应用。
快影具体持动作传感器如下图所示:
根据图片结果显示,该应用持有gravity重力、bosch-bmi160陀螺仪、accelerometer-bmi160加速度传感器、mag-akm09918磁场、rotationVector旋转矢量和game Rotation Vector 游戏旋转矢量传感器,这些传感器均是动作传感器的一部分。测试前的遍历并没有遍历到相关功能,并且手机在同一位置一直处于静止状态,结果显示一直在调用相关的动作传感器,该行为的存在不具备较强的合理性,建议使用相关功能时开启相关服务。应用频繁调用动作传感器,会阻止手机不会进入休眠状态,影响手机的待机时长。
优化建议
1.应用放置在后台如果没有业务必须性,尽量不要申请;
2.应用放置在后台因为业务需要申请动作传感器,请携带参数超时释放或者做相关逻辑及时释放,让系统再次进入休眠状态;
3.如果您的应用需要保持唤醒,请考虑使用JobScheduler或Firebase Cloud Messaging以特定时间间隔触发来配置。
END