前台服务文档介绍了 Android 前台服务的当前行为。该文档针对大多数应用(无论是否以最新版 Android 为目标平台)提供了最佳实践指南。
本页介绍了前台服务的一些最新重大变更,以及这些变更对未以最新版 Android 平台为目标平台的应用的影响。在许多情况下,对于以较低 API 级别为目标平台的应用来说是可选的最佳实践,对于以较高 API 级别为目标平台的应用来说则变成了强制性要求。
Android 16(API 级别 36)
以下变更适用于在 Android 16 或更高版本上运行的应用,无论这些应用以哪个 API 级别为目标平台:
从前台服务启动的后台作业现在必须遵守各自的运行时配额。这包括直接使用
JobScheduler调度的作业,以及由其他库(如 WorkManager或DownloadManager)创建的作业。如需传输数据以响应用户操作,请考虑使用 由用户发起的数据传输作业。这些作业不受普通作业配额的限制。
Android 15(API 级别 35)
以下要求适用于以 API 级别 35 或更高级别为目标平台的应用:
- 对
dataSync前台服务的运行时长施加了新的限制。前台服务超时行为中介绍了这些限制。类似的限制也适用于 Android 15 中新增的mediaProcessing前台服务类型。 BOOT_COMPLETED前台服务不再允许启动某些 前台服务。- 持有
SYSTEM_ALERT_WINDOW权限的应用只有在当前有可见的 叠加层窗口(或者满足后台启动限制的其他 豁免条件之一)的情况下,才允许从后台启动 前台服务。以前,这些应用的豁免范围更广。
Android 14(API 级别 34)
以下要求适用于以 API 级别 34 或更高级别为目标平台的应用:
- 您必须使用服务类型声明所有前台服务 。
- 应用必须根据前台服务将要执行的工作来请求相应的权限类型。每种前台服务类型都有对应的权限类型。例如,如果应用启动使用相机的前台服务,您必须同时请求
FOREGROUND_SERVICE和FOREGROUND_SERVICE_CAMERA权限。如果应用以 API 级别 34 或更高级别为目标平台,但未请求相应的特定权限,系统会抛出SecurityException。
Android 12(API 级别 31)
以下要求适用于以 API 级别 31 或更高级别为目标平台的应用:
- 应用在后台运行时,不允许启动前台服务,但有一些特定例外情况。如需了解详情以及 有关此规则的例外情况的信息,请参阅与从后台启动前台服务 相关的限制。
Android 11(API 级别 30)
以下要求适用于以 API 级别 30 或更高级别为目标平台的应用:
- 如果应用的前台服务使用相机或麦克风,则应用必须声明该服务,并分别使用
camera或microphone服务类型。
Android 10(API 级别 29)
以下要求适用于以 API 级别 29 或更高级别为目标平台的应用:
Android 9(API 级别 28)
Android 9 引入了
FOREGROUND_SERVICE 权限。在 Android 9 上运行且使用前台服务的应用必须具有该权限。
如果以 API 级别 28 或更高级别为目标平台的应用尝试
创建前台服务,但未请求 FOREGROUND_SERVICE
权限,系统会抛出 SecurityException。