前台服务 (FGS) 任务管理器

无论应用采用何种目标 SDK 版本,Android 13(API 级别 33)都允许用户从抽屉式通知栏中停止前台服务。这项新功能称为前台服务 (FGS) 任务管理器,它会显示当前正在运行前台服务的应用列表。此列表的标签为使用中的应用。每个应用旁边都有一个停止按钮。图 1 说明了搭载 Android 13 的设备上的 FGS 任务管理器的工作流程:

抽屉式通知栏底部有一个按钮,用于指示当前在后台运行的应用的数量。按此按钮时,系统会显示一个对话框,其中会列出不同应用的名称。每个应用的右侧都有一个“停止”按钮
图 1. 搭载 Android 13 的设备上的 FGS 任务管理器工作流程。

用户操作会停止您的整个应用

当用户在 FGS 任务管理器中按您应用旁边的停止按钮时,系统会停止您的整个应用,而不仅仅是正在运行的前台服务。

比较“向上滑动”用户操作和“强行停止”用户操作的行为

请参见下表中 FGS 任务管理器与现有功能的比较:从最近用过屏幕“向上滑动”和“强行停止”出现异常的应用

FGS 任务管理器 向上滑动 强行停止
立即从内存中移除应用
停止媒体播放
停止 FGS/移除关联的通知
移除 activity 返回堆栈
从历史记录中移除应用
取消预定作业
取消闹钟

用户从 FGS 任务管理器停止应用时,不会发送任何回调

当用户按停止按钮时,系统不会向您的应用发送任何回调。当应用启动备份时,建议您检查一下现有 ApplicationExitInfo API 中的新 REASON_USER_REQUESTED 原因,这可能会很有帮助。

与长时间运行的前台服务相关的系统提示

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

详细了解就长时间运行的前台服务提醒用户的新系统通知

豁免

系统会针对特定类型的应用提供几种级别的豁免,下面几部分将介绍这些豁免。

豁免针对的是应用而不是进程。如果系统豁免了应用中的一个进程,则该应用中的所有其他进程也会被豁免。

完全不会显示在 FGS 任务管理器中

以下应用可以运行前台服务,而完全不会显示在任务管理器中:

免于被用户停止

当以下类型的应用运行前台服务时,它们会显示在 FGS 任务管理器中,但应用名称旁边没有可以供用户按的停止按钮:

测试

如需测试应用在用户停止应用的过程中和之后的行为是否符合预期,请在终端窗口中运行以下 adb 命令:

adb shell cmd activity stop-app PACKAGE_NAME