系统会根据设备状态、应用状态和应用待机省电模式来确定应用资源请求的优先级。
Android 系统可以通过两种不同方式强制执行资源限制。一种优化资源利用率的方式是推迟工作执行,直到设备离开低电量设备状态(例如打盹模式)。例如,常规作业和不精确的闹钟会被推迟,以便在设备离开打盹模式后执行。
另一种方式是根据应用当前的待机省电模式,减少应用唤醒设备并执行工作的次数。系统可以减少频率(应用唤醒设备的频率)和总持续时间(设备保持唤醒状态的时间)。例如,如果应用处于不常用待机省电模式,则该应用在连续 24 小时内可以运行计划作业的总时长为 10 分钟。
请注意,当应用不可见时,WorkManager 会使用 JobScheduler 来安排任务,因此工作器会受到作业资源限制的影响。
您可以通过阅读以下内容进一步了解限制:
请注意,设备状态和应用状态可以取代应用待机省电模式限制。例如,如果设备正在充电,系统允许处于不常用待机省电模式的应用在连续 24 小时内执行作业的时间超过 10 分钟。
Android 的行为变更也影响了资源限制。请参阅影响资源限制的 Android 行为变更以了解更多信息。
基于设备状态的资源限制
系统还可以根据设备状态豁免或强制执行资源限制。例如,处于充电状态的设备无论其应用待机省电模式如何,都会获得不受限制的资源访问权限。
设备状态 |
作业 |
闹钟 |
网络访问 |
Firebase 云消息传递 |
充电中 |
无执行限制,受限待机省电模式除外 |
所有待机省电模式和进程状态均无执行限制,除非用户手动限制应用电池用量 |
无限制 |
无限制 |
屏幕亮起 |
执行限制根据待机省电模式强制执行 |
执行限制根据应用进程和待机省电模式强制执行 |
访问权限取决于待机省电模式或应用进程状态 |
无限制 |
屏幕关闭且打盹模式处于活跃状态 |
执行限制根据待机省电模式强制执行,并且执行被推迟到打盹模式维护窗口 |
执行限制根据待机省电模式强制执行。 常规闹钟:推迟到打盹模式维护窗口 空闲时闹钟:每小时限制为 7 个 |
打盹模式期间受限 |
高优先级:无执行限制 普通优先级:推迟到打盹模式维护窗口 |
基于应用状态的资源限制
系统是否强制执行应用待机省电模式的资源限制取决于应用进程的重要性。请查看ActivityManager.RunningAppProcessInfo.importance
以了解不同级别的进程重要性。
设备用户还可以选择手动覆盖应用电源管理优化,这会取代应用待机省电模式限制。
应用状态 |
作业 |
闹钟 |
网络 |
应用进程可见或处于前台状态 |
无执行限制 |
无频率限制 |
无限制 |
应用进程正在运行前台服务 |
执行限制根据待机省电模式强制执行*** |
频率限制根据待机省电模式强制执行 |
无限制 |
用户手动限制应用电池用量 |
执行受限 |
执行受限 |
访问权限取决于待机省电模式行为 |
用户手动解除应用电池限制 |
执行限制宽松*** |
无执行限制 |
无限制,除非设备处于数据节省模式 |
*** 作业的执行配额行为在Android 16 中发生了变化。在 Android 16 之前,当应用运行前台服务或用户解除应用电池限制时,没有执行限制。
基于应用待机省电模式的资源限制
注意:此表中的值不能保证执行持续时间,因为其他设备条件或模式更改可能会影响资源限制。这些值也可能会在未来的 Android 版本中发生变化。
常规作业、加急作业、闹钟和网络访问可能会根据应用待机省电模式受到限制。使用这些近似的电源管理限制作为指导,了解应用待机省电模式如何影响您的应用。为了获得最佳性能,请遵循应用待机省电模式最佳实践并优化任务调度 API 的电池用量。
请注意,从Android 13开始,应用的待机省电模式不再决定应用可以使用多少高优先级 FCM。
应用待机省电模式 |
常规作业* |
加急作业** |
闹钟 |
网络 |
活跃 |
在连续 60 分钟内最长 20 分钟*** |
在连续 24 小时内最长 30 分钟*** |
无执行限制 |
无限制 |
工作集 |
在连续 4 小时内最长 10 分钟 |
在连续 24 小时内最长 15 分钟 |
每小时限制为 10 次 |
无限制 |
常用 |
在连续 12 小时内最长 10 分钟 |
在连续 24 小时内最长 10 分钟 |
每小时限制为 2 次 |
无限制 |
不常用 |
在连续 24 小时内最长 10 分钟 |
在连续 24 小时内最长 10 分钟 |
每小时限制为 1 次 |
已停用 |
受限 |
每天一次,最长 10 分钟 |
在连续 24 小时窗口内最长 5 分钟 |
已停用 |
* 常规作业是指在 JobScheduler 中未使用 setUserInitiated(true)
或 setExpedited(boolean)
标志,或在 WorkManager 中未使用加急工作器的作业。
** 加急作业有独立的执行限制,不同于常规作业;在加急限制耗尽后,它们可以在 WorkManager 中配置为继续使用常规作业执行限制运行。
*** 作业的执行配额行为在Android 16 中发生了变化。在 Android 16 之前,当应用处于活跃待机省电模式时,没有执行限制。
影响资源限制的 Android 行为变更
以下 Android 更新对应用资源限制进行了更改。
Android 16
Android 已根据以下因素调整了常规作业和加急作业的执行运行时配额
- 应用所属的应用待机省电模式
- 如果作业在应用处于顶级状态时开始执行
- 如果作业在运行前台服务时正在执行
Android 13
高优先级 Firebase 云消息 (FCM) 配额行为变更
- 应用待机省电模式不再决定应用可以使用多少高优先级 FCM。
- 如果系统检测到某个应用持续发送不会产生通知的高优先级消息,则会降级这些高优先级消息
- 有关高优先级消息的当前指南,请参阅 Firebase 文档中关于设置和管理消息优先级的内容。
Android 9
Android 9 引入了一项新的电池管理功能:应用待机省电模式。应用待机省电模式可帮助系统根据应用的近期使用情况和使用频率来确定应用资源请求的优先级。根据应用使用模式,每个应用都被放置在五个优先级模式之一中。系统会根据应用所属的模式限制每个应用可用的设备资源。