Android 14 Beta 版现已推出。欢迎立即试用它,并让我们知道您的想法!

电池资源利用率

Android 13(API 级别 33)引入了以下省电措施:

关于应用何时会进入“受限”应用待机模式存储分区的规则更新

除非您的应用符合豁免条件,否则当您的应用出现以下任何行为时,系统就会将其放入受限存储分区:

  • 用户有 8 天没有与您的应用互动。如果用户与另一个绑定到您应用的服务的应用互动,系统也会将您的应用视为“使用过”。

  • 您的应用在 24 小时内调用了过多的广播绑定

  • (仅限受支持的设备)您的应用在 24 小时内在后台消耗了大量的设备电池电量。此阈值取决于设备,特别是对于低 RAM 设备来说可能不同。

    在衡量应用对设备电池续航时间的影响时,系统会考虑应用在几个不同方面执行的操作,包括:

    • 作业(包括加急作业)
    • 广播接收器
    • 后台服务
    • 系统是否已缓存应用的进程

用户互动可让您的应用退出“受限”存储分区

当用户与您的应用互动时(包括通过以下几种方式互动),系统会将应用从受限存储分区中移出,并放入另一个应用待机模式存储分区

  • 用户点按您的应用发送的通知。

  • 用户在属于您应用的 widget 中执行操作。

  • 用户通过按媒体按钮影响您应用的前台服务。

  • 用户在与 Android Automotive OS 互动时连接到您的应用(您的应用在此过程中使用了前台服务或 CONNECTION_TYPE_PROJECTION)。

  • 您的应用在画中画 (PiP) 模式下可见。

  • 您的应用是屏幕上当前运行的应用之一。(主要适用于大屏设备。)

关于受限后台电池用量的新限制

使用现有 Android 版本的用户能够调整应用在后台运行时可以执行的工作量。系统设置中的电池用量页面上会显示以下选项:

  • 无限制:允许后台工作,这可能会消耗更多电量。
  • 优化(默认):根据用户与应用互动的方式,优化应用执行后台工作的能力。
  • 受限:更注重延长设备的电池续航时间,而不是实现应用的全面功能。对于应用可以在后台执行的操作施加了更多限制。

自 Android 9(API 级别 28)起,处于“受限”状态的应用具有以下限制:

  • 无法启动前台服务
  • 现有的前台服务会从前台移除
  • 不会触发闹钟
  • 不会执行作业

当您的应用以 Android 13 为目标平台时,除非应用因其他原因启动,否则系统不会传送以下任何广播:

  • BOOT_COMPLETED
  • LOCKED_BOOT_COMPLETED

与长时间运行的前台服务相关的系统通知

如果系统检测到您的应用长时间运行某项前台服务(在 24 小时的时间段内至少运行 20 小时),便会发送通知邀请用户与前台服务 (FGS) 任务管理器互动。该通知包含以下内容:

APP is running in the background for a long time. Tap to review.

如果满足以下任一条件,系统将不会显示此通知:

此外,如果您的应用在 24 小时内运行超过 4 小时的前台服务属于 FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACKFOREGROUND_SERVICE_TYPE_LOCATION 类型,则系统不会针对您的应用启动的任何前台服务发送长时间运行通知。

豁免

存在以下情况的应用不会受到 Android 13 中引入的任何省电措施的影响:

在以下情况下,您的应用可以免于进入“受限”应用待机模式存储分区,并可以绕过“8 天无活动”触发器:

在以下情况下,您的应用可以不受 Android 13 中引入的大多数省电措施的影响,但系统仍然会发送针对长时间运行的前台服务的通知

测试

以下几个部分将介绍几种测试 Android 13 中引入的省电措施会对应用产生何种影响的方式。

禁止在后台使用

如需禁止您的应用在后台运行,请在终端窗口中运行以下命令:

adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND deny

将应用放入受限存储分区

如需强制系统将您的应用放入受限存储分区,请在终端窗口中运行以下命令:

adb shell am set-standby-bucket PACKAGE_NAME restricted