Android P 在现有平台的功能基础上加入多项新特性以提升设备电量管理能力,确保系统对应用进行最合适的资源分配。

电量管理特性主要体现在以下四个方面:

1. 应用待机分组

Android P 新增应用待机分组功能,让系统根据用户的使用情况而限制应用调用 CPU 或网络等设备资源。

2. 后台限制

Android P新增后台限制功能,若应用出现 Android Vitals 内所描述的不良行为,系统将提醒用户限制该应用访问设备资源。

>> Android Vitals 链接:

https://developer.android.google.cn/topic/performance/vitals/index.html

3. 省电模式的优化

Android P 优化了现有的省电助手功能,在启用该功能后,系统将对所有应用的后台运行实施加以限制。

4. 低耗电模式

当用户一段时间没有使用设备时,设备将进入低耗电模式,所有应用都将受到影响。 Android P 并未针对低电耗模式作出任何更改。

>> 低耗电模式链接:

https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_doze

*注意:不论应用程序的 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) 运行和闹铃触发方面受到部分系统限制,详情请查阅《附件: 电量管理限制》。

>>《附件: 电量管理限制》链接:

https://developer.android.google.cn/preview/features/power-details

或  点击屏末 | 阅读原文 | 查阅《附件:电量管理限制》文档

常用 (Frequent)

常用应用指用户经常使用但不是每天使用的应用,比如用户在健身房使用的打卡应用可能就属于这一群组。

系统对常用分组采用的限制更强,应用运行任务(job)和触发闹铃的能力都会受到影响,而且接受的高优先性FCM消息也有数量上限,详情请查阅《附件:电量管理限制》。

极少 (Rare)

若应用的使用频率很低,它就会被划分至该分组,酒店应用就是一个很好的例子——用户只有在下榻这个酒店的时候才会打开此应用。

该群组下的应用在任务 (job)、闹铃和高优先性FCM消息的资源调用上都会受到严格的限制。此外,网络访问能力也会受到影响。详情请阅读《附件:电量管理限制》。

最佳实践 

如果您已经根据低耗电模式和应用待机模式的最佳实践对您的应用进行过相关优化,您应该能够轻松应对新的电量管理特性。不过,部分应用行为可能会受到此次特性变更的影响,无法继续正常运作。

  • 请勿尝试操控系统将您的应用分配至某一特定群组。系统的分组规则可能会发生变化,而且设备厂商也可以根据自己的算法自行开发分组应用。开发者需要确保自己的应用在任何群组内都能够继续流畅运行。

  • 如果应用没有 Launcher Activity,它可能永远都不会切换至活跃分组。开发者可能需要重新设计应用并添加此类activity。

  • 如果应用的推送不具备可操作性,用户将无法借助与推送的交互将应用切换至活跃群组。在这种情况下,开发者可考虑重新设计推送功能,允许用户响应。具体操作指南,请参照 Material Design 中有关推送设计的章节。

  • 若应用在接受高优先级的 FCM 消息之后未能发送推送,用户将无法与应用产生互动并将其优先级提升至 “活跃” 等级。其实,高优先级 FCM 消息的唯一用途就是向用户发送推送,因此这种情况绝对不应该出现。如果您错误的将没有与用户进行互动的 FCM 消息设置为高优先级,这种标记不当的行为可能会导致其他不良后果,比如:在应用耗尽高优先级消息额度之后,系统会把真正紧急的 FCM 消息当做“普通优先级”消息来处理。

>> Material Design 链接:

https://material.io/guidelines/patterns/notifications.html

*注意:如果用户多次忽略某条推送,系统会询问用户是否不再接受此推送。请开发者不要只是为了将应用保留在活跃群组,而向用户不断发送推送。

  • 如果一个应用下面有多个包,这些包可能分别属于不同分组,各自的访问权限也有所不同。在测试环节时,请开发者先将包划分至不同分组,然后进行多次测试,确保应用行为无异常。

后台限制

当系统监测到应用消耗过多资源时,系统会通知并询问用户是否需要限制该应用的后台活动。目前有以下两种情况会触发系统发送此通知:

  • 频繁使用唤醒锁 (wake locks):屏幕关闭后,局部唤醒锁 (Partial wake lock) 连续开启 1 小时;

  • 过多的后台服务:当应用目标 API 等级低于 26,且运行过多后台服务。

设备厂商可自行决定具体采用的限制,比如:在 AOSP 构建上,除非受限应用运行在前台,否则它将无法运行任务 (job),触发闹铃或者访问网络。(请查阅《后台服务限制》了解如何判断应用是否为前台运行。) 详细限制列表,请查阅《附件:电量管理限制》。

>>《后台服务限制》链接:

https://developer.android.google.cn/about/versions/oreo/background.html#services

 点击屏末 | 阅读原文 | 查阅《附件:电量管理限制》文档

省电助手优化

Android P 进一步提升了省电模式的性能。由设备厂商来决定其采用的具体限制,比如:在AOSP构建上存在以下系统限制:

  • 应用将更容易进入待机模式,系统不会一直等到应用处于“空闲”状态才采取行行动;

  • 不论目标API等级为何,所有应用都会受到后台执行限制;

  • 屏幕关闭后,位置服务可能被禁用;

  • 处于后台的应用不能访问网络。

除此以外,Android P 还引入了多项针对设备的电量管理的优化,请阅读《附件:电量管理限制》获取进一步信息。

建议开发者在开启省电模式的情况下测试应用,您可在 Settings > Battery Saver 内手动开启省电模式:

低耗电模式

在低耗电模式下,应用对高耗电资源的使用权限将被推迟至下一个维护时段。具体限制请参照《附件:电量管理限制》。

进一步信息,请查阅《对低耗电模式和应用待机模式进行针对性优化》。

>>《对低耗电模式和应用待机模式进行针对性优化》链接:

https://developer.android.google.cn/training/monitoring-device-state/doze-standby.html

测试和错误排查

新的电量管理特性会影响在 Android P 上运行的所有应用,不论应用是否以 Android P 为目标平台开发。而开发者则需要保证自己的应用在设备上能够继续流畅运行,这一点至关重要。

请确保在多种电量优化功能的情况下对应用的主要用例进行测试。您可使用 Android Debug Bridge 命令开启或关闭部分特性。

>> Android Debug Bridge 链接:

https://developer.android.google.cn/studio/command-line/adb.html

使用 Android Debug Bridge 命令

您可使用 adb shell 命令来测试部分电量管理特性。

阅读《在低耗电模式和应用待机模式下进行应用测试》,了解如何在低耗电模式下使用 adb 命令。

>>《在低耗电模式和应用待机模式下进行应用测试》链接:

https://developer.android.google.cn/training/monitoring-device-state/doze-standby.html

应用待机分组

您可通过adb命令将应用手动划分至某一待机群组。输入以下命令,更改群组:

若想要同时对多个包进行群组设置,请输入:

输入以下命令,查看应用当下所处群组:

如果您没有传递 pasckagename 参数值,该命令将列出全部应用的群组。应用可通过调用 UsageStatsManager.getAppStandbyBucket(),查看在运行时所处的群组:

后台限制

手动执行后台限制,请输入以下命令:

取消后台限制,请输入以下命令:

省电模式

以下命令可以帮助开发者测试应用在低电量环境下的表现。

*注意:您也可以在 setting > Battery saver中,手动切换至省电模式

模拟设备断开充电状态,请输入:

测试应用在低电量状态下的表现,请输入:

完成测试之后,您可以通过以下命令将设置返回至测试前状态:

 点击屏末 | 阅读原文 | 查阅《附件:电量管理限制》文档

推荐阅读

· 最终预览版 Beta 4 现已发布!

· 应用迁移至 Android P 操作指南

· 开放, 玩心, 成功!与您相约 ChinaJoy 2018

Android P 电量管理相关推荐

  1. Android P 电量管理,Android P亮点汇总:更智能 更简单

    在今天早些时候开幕的 I/O 开发者大会上,谷歌正式宣布了 Android P 系统.本次更新主打智能,简单,让用户享受更健康的数字生活.具体来说有哪些更新呢?跟随小编一起来看看吧. 全新手势操作 优 ...

  2. android 4.4 电池电量管理底层分析(C\C++层)

    参考文献:http://blog.csdn.net/wlwl0071986/article/details/38778897 简介: Linux电池驱动用于和PMIC交互.负责监听电池产生的相关事件, ...

  3. android 电量管理

    android 2.3 电量管理(http://blog.csdn.net/z642010820/article/details/7341469) android 2.3 电源管理 1.     介绍 ...

  4. 巧妙设置Android来方便管理Linux和Windows

    前几天晚上睡觉前没事,想了想如何实现用Android手机来管理Linux和Windows,比如连接到Linux的SSH(Secured Shell)和连接到Windows的cmd(直接访问PowerS ...

  5. Android系统电池管理(PowerManagerService)框架分析及其在实体设备和虚拟设备上的差异(一)

    0 前言 移动设备的电池一直是影响移动设备用户体验的关键问题之一,电池容量.充电速度.以及系统待机时长都在用户考虑范围内. 在众多嵌入式设备系统中,Android系统的设计的主要目的就是为了通过触摸屏 ...

  6. Android的电源管理

    我们从Java应用层面, Android framework层面, Linux内核层面分别进行详细的讨论: 应用层的使用: Android提供了现成android.os.PowerManager类,该 ...

  7. Android系统如何管理自己内存的?

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 机缘巧合写下这篇博客,作为个人工作经验的总结,不足之处,随后补上. 安卓是基于Linux2.6内核的 ...

  8. Android之内存管理-内存监测-内存优化

    推荐文章:Android进程与内存及内存泄漏 Android之内存管理 1.1 Dalvik Dalvik虚拟机是Android程序的虚拟机,是Android中Java程序的运行基础.其指令集基于寄存 ...

  9. Android关掉多个activity,Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit...

    本文将带你了解Android应用开发之Android Activity栈管理  制定关闭某一个Activity,关闭所有Activit,希望本文对大家学Android有所帮助. 系统Api :打开新的 ...

最新文章

  1. Shell函数返回值、删除函数、在终端调用函数
  2. php执行系统外部命令的四种方法
  3. idea yml文件不变成树叶_springboot获取配置文件的三种方式
  4. 解决关于登录校园网显示不在IP段的问题方案(要看注意事项哦!)
  5. 攻城时服务器维护,8月31日服务器维护更新公告
  6. 腾讯视频怎样关闭推送迷你页面
  7. 计算神经生物学 计算机转生物,计算神经生物学的应用有哪些?
  8. json编辑器插件 vue_vue-json-editor json编辑器
  9. 超细!详解AD13:如何从零开始画出一个PCB(电路板)
  10. 海马体记忆训练:让你拥有超常记忆力
  11. 项目验收之时,所需文档
  12. linux 百度云 备份软件下载,Linux 安装百度云,自动备份服务器资料
  13. python爬取京东书籍_一个scrapy框架的爬虫(爬取京东图书)
  14. OpenCV第六篇:阈值函数
  15. 为开源新时代赋能 2021开源科技节完美落幕
  16. 微型计算机中常见到的Ega.VGA等是指,大学计算机基础选择题汇总
  17. 函数基(function basis)
  18. php apache win7,win7配置Apache24和PHP7.2.4开发环境
  19. flex中dataGrid的编辑功能
  20. 一天中最好的排毒时间

热门文章

  1. StaMPS结合TRIAN 做GACOS大气校正
  2. 安装mysql驱动报错_java.sql.SQLException: org.gjt.mm.mysql.Driver 报错【解决办法】
  3. 江民科技董事长王江民因病在北京逝世 享年59岁
  4. PASCAL Visual Object Classes Challenge 2007 (VOC2007) 图像标注指南 / 标注规则
  5. 宝德服务器——企业需要真正的按需定制产品
  6. centos7安装dcos
  7. HTML期末大作业课程设计~仿阴阳师游戏官网首页html模板(HTML+CSS)~动漫主题html5网页模板-HTML期末作业课程设计期末大作业动漫主题html5网页模板-html5网页设计源码...
  8. 【推荐】程序员必读的三十本经典巨作
  9. win7主机 ubuntu10.04虚拟机 共享文件夹设置
  10. html如何实现统计访客功能,JS 实时网站访客(用户)统计