一、Android设备后台应用高功耗原因
Android 开放生态,赋予应用本身太多的权限【IOS则相反严格权限申请即IOS的功耗问题比Android少】, 需要靠应用本身的良好的设计和自觉的遵守规矩. 这就造成了很多应用有意无意间由于滥用权限, 导致的各种乱象, 如频繁设置 alarm, wakelock,cpu, sensor, gps, btScan,wifiScan, job前台包活, 自启或链式关联自启等等. 这些也需要系统去对其进行规范。
例如为了商业利益的应用广告推送和日活率,有意让应用频繁使用系统软硬件资源,这样可以让用户有意无意观看广告或高活率拿到更多的投资人的钱。
二、华为后台资源使用红线标准
在安卓绿色联盟的会议中,华为公开过他们后台资源使用的“红线”:
三、华为后台资源使用前后台规则标准
四、小结
表格1:后台资源使用红线标准
资源类型 | 红线标准 |
豁免正常业务使用资源 | 1. 用户经常使用的应用、默认设置应用 2. 用户可感知业务:下载和上传(如手机克隆)、播放声音、录音、导航、计步、记录轨迹、骑行、蓝牙连接(穿戴设备)等 |
平均电流(亮灭屏) | IM应用<15mA/2min,其他应用<2mA/2min 注:如前台服务增加阈值(有常驻通知) |
持锁阻止系统休眠(仅灭屏) | 本次灭屏累计持锁超过5min |
Alarm频繁唤醒系统(仅灭屏) | 本次灭屏应用唤醒超过20次/h 注:如果应用同时(间隔小于50ms)算一次唤醒 |
应用频繁自启(亮灭屏) | 应用进程后台自启超过20次/h或超过10次/10min |
后台长时间使用GPS(亮灭屏) | 本次灭屏(或亮屏)GPS累计使用超过5min |
后台CPU高负载耗电(亮灭屏) | 后台应用CPU负载持续10min超过40% |
长时间网络定位(仅灭屏) | 灭屏网络定位超过30min(非休眠时长) |
后台WiFi扫描(亮屏) | 本次亮屏WiFi扫描累计超过3min/h |
后台蓝牙扫描(仅灭屏) | 本次灭屏累计扫描超过5min/h |
后台频繁收发数据包(仅灭屏) | 以5s为周期,统计收发数据包次数 IM/SMS/Email应用本次灭屏累计发送数据包超过60次/h;其他类型应用本次灭屏累计发送数据包超过30次/h |
持锁阻止超时灭屏(仅亮屏) | 没活动状态下,亮屏时长超过超时灭屏时间,提醒高耗电 |
频繁Job持锁 | 应用注册100个job以上,处理周期行重复任务,执行超过30秒,间隔小于20分钟处理一次性任务,执行时间超过30秒 |
Sync长时间任务执行 | 任务不能间隔小于20分钟,执行时间不超过10分钟 |
表格2:前台规则 vs 后台规则对比
项目 | 前台规则 | 后台规则 |
Alarm | 单个Alarm每小时不能启动超过20次 | 单个Alarm每小时不能启动超过10次 |
WakeLock | 单个WakeLock每小时不能超过30分钟或者超过20次 | 1. WakeLock每小时不能超过30分钟 2. 单个WakeLock每小时不能超过10分钟或者超过12次 |
Sensor | 不监控前台Sensor使用 | 每小时使用不能超过30分钟 |
WiFi scans | 每小时扫描不允许超过10次 | 每小时扫描不允许超过4次 |
Bluetooth scans | 每小时扫描不允许超过10次 | 每小时扫描不允许超过4次 |
GPS | 每小时使用不能超过30分钟 | 每小时使用不能超过15分钟 |
Camera | 不监控前台相机使用 | 后台不允许使用相机 |
Network | 不监控前台网络耗电 | 每小时后台网络数据量不能超过10MB |
CPU | 不监控前台CPU | 后台CPU持续运行超过30分钟 |
关键点总结:
1.豁免场景:用户常用的应用和用户可感知的业务(如导航、播放、下载等)不受红线限制
2.电流限制:IM应用相对宽松(15mA/2min),其他应用严格(2mA/2min)
3.前后台差异:后台限制比前台严格得多,特别是Alarm、WakeLock、扫描等
4.灭屏限制:灭屏状态下的资源使用受到更严格的监控
5.网络限制:后台每小时网络数据量不得超过10MB
6.Camera限制:后台完全禁止使用相机
五、软件绿色联盟标准
华为很多功耗标准的思想也写到了软件绿色两面应用体验标准里了。