前台服务变更

前台服务文档介绍了 Android 前台服务的当前行为。文档针对大多数应用(无论其是否以最新版 Android 为目标平台)提供了最佳实践指南。

本页面介绍了前台服务的一些最新重要变更,以及这些变更对未以最新版 Android 平台为目标平台的应用的影响。在许多情况下,对于以较低 API 级别为目标平台的应用来说是可选的最佳实践,对于以较高 API 级别为目标平台的应用来说将成为强制性要求。

Android 16 (API 级别 36)

以下变更适用于在 Android 16 或更高版本上运行的应用,无论其目标 API 级别为何。

  • 从前台服务启动的后台作业现在必须遵守其各自的运行时配额。这包括直接使用 JobScheduler 调度的作业,以及由其他库(例如 WorkManagerDownloadManager)创建的作业。

    如需响应用户操作来传输数据,请考虑使用用户发起的数据传输作业。这些作业不受常规作业配额的限制。

Android 15 (API 级别 35)

以下要求适用于以 API 级别 35 或更高版本为目标平台的应用

Android 14 (API 级别 34)

以下要求适用于以 API 级别 34 或更高版本为目标平台的应用

  • 您必须声明所有前台服务并指明其服务类型。
  • 应用必须为前台服务将执行的工作类型请求相应的权限类型。每种前台服务类型都有对应的权限类型。例如,如果应用启动使用摄像机的前台服务,则必须同时请求 FOREGROUND_SERVICEFOREGROUND_SERVICE_CAMERA 权限。如果应用的目标 API 级别为 34 或更高,但未请求相应的特定权限,系统将抛出 SecurityException

Android 12 (API 级别 31)

以下要求适用于以 API 级别 31 或更高版本为目标平台的应用

  • 应用在后台运行时不允许启动前台服务,但有一些特定的例外情况。如需了解详情以及此规则的例外情况,请参阅 从后台启动前台服务的限制

Android 11 (API 级别 30)

以下要求适用于以 API 级别 30 或更高版本为目标平台的应用

Android 10 (API 级别 29)

以下要求适用于以 API 级别 29 或更高版本为目标平台的应用

Android 9 (API 级别 28)

Android 9 引入了 FOREGROUND_SERVICE 权限。在 Android 9 上运行并使用前台服务的应用必须拥有该权限。

如果应用的目标 API 级别为 28 或更高,但尝试在未请求 FOREGROUND_SERVICE 权限的情况下创建前台服务,系统将抛出 SecurityException