电量管理特性主要体现在以下四个方面:
1. 应用待机分组
Android P 新增应用待机分组功能,让系统根据用户的使用情况而限制应用调用 CPU 或网络等设备资源。
2. 后台限制
Android P新增后台限制功能,若应用出现 Android Vitals 内所描述的不良行为,系统将提醒用户限制该应用访问设备资源。
3. 省电模式的优化
Android P 优化了现有的省电助手功能,在启用该功能后,系统将对所有应用的后台运行实施加以限制。
4. 低耗电模式
当用户一段时间没有使用设备时,设备将进入 低耗电模式 ,所有应用都将受到影响。 Android P 并未针对低电耗模式作出任何更改。
注意:不论应用程序的 target SDK 是否为 Android P ,所有应用都受限于以上行为变更。
应用待机分组
应用待机分组是 Android P 新添加的一项电量管理功能,它能根据应用的使用频率或者最近一次使用时间,对其资源请求进行优先级排序。应用待机分组一共有五个分组,系统会根据每个应用的使用情况,将其划分至五个优先分组中的一个,而每个分组对设备资源的调度各有不同的限制。
优先分组
系统将动态分配各个应用至不同分组,并根据需求重新分配所在分组。系统或会通过利用机器学习预加载的应用,从而预测各个应用的使用概率,然后将它们编配至相应的群组中。若设备中没有安装此类系统应用,在默认情况下,系统会根据应用的近期使用情况进行等级划分。应用活跃度越高,所处分组的优先级就越高,也就相应地更容易获取设备资源。尤其是,应用所处的的群组决定了其所安排的任务 (job),触发标准闹铃以及接受高优先级Firebase Cloud Messagesing信息的频率。这些限制仅在非充电状态下才有效;当设备充电时,应用并不会受到系统限制。
* 注意:设备厂商可以自行规定非活跃应用的群组划分规则。请开发者不要试图篡改应用所处的群组,而是专注于改善应用行为,确保应用被划分至目标群组后,依旧能够顺利运行。您可以调用 UsageStatsManager.getAppStandbyBucket(),查看应用当下所处群组。
应用待机模式下共有以下五类群组:
1. 活跃 (Active) : 应用正在被使用
2. 工作 (Working set) : 应用使用频率很高
3. 常用 (Frequent) : 应用经常但不是每天被使用
4. 极少 (Rare) : 应用偶尔被使用
5. 应用偶尔被使用 (App is not frequently used)
此外,安装后一次都未被使用过的应用将被划分至 “从不” 这一特殊群组,并受到十分严格的系统限制。
* 注意:应用待机群组限制不适用于低耗电模式白名单中的应用。
活跃 (Active) 活跃应用指用户正在使用的应用,例如:
- 应用启动了一个Activity;
- 应用正在运行前台服务;
- 另一个前台应用已关联至该应用 (通过同步适配器与前台应用的内容提供器相关联);
- 用户点击了应用的推送
在任务、标准闹铃以及FCM信息的资源调用上,活跃群组应用免受任何系统限制。
工作 (Working set)
若应用的运行频率很高,但目前并未处于“活跃”状态,它就会被划分至工作群组,例如用户常用的社交媒体应用。此外,该群组还包括了那些被间接使用的应用。
工作分组内的应用会在任务 (job) 运行和闹铃触发方面受到部分系统限制,详情请查阅 《附件: 电量管理限制》 。
常用 (Frequent)
常用应用指用户经常使用但不是每天使用的应用,比如用户在健身房使用的打卡应用可能就属于这一群组。
系统对常用分组采用的限制更强,应用运行任务(job)和触发闹铃的能力都会受到影响,而且接受的高优先性FCM消息也有数量上限,详情请查阅《附件:电量管理限制》。
极少 (Rare)
若应用的使用频率很低,它就会被划分至该分组,酒店应用就是一个很好的例子——用户只有在下榻这个酒店的时候才会打开此应用。