数据传输后台任务选项

许多应用程序需要在后台传输数据。此页面帮助您找到适合您需求的方法。

迁移用例

本部分描述了一些应用程序需要将数据传输到或从设备中传输数据的常见情况,并帮助您选择适合您情况的工具。

通过网络传输数据

如果传输是由用户发起的,并且您需要让用户了解传输进度,使用用户发起的数据传输 API。否则,使用 WorkManager适当的前台服务类型

如果您需要安排下载,您也可以使用 DownloadManagerDownloadManager 管理应用程序的生命周期,并负责在出现故障、设备重启和连接更改后重新尝试下载。但是,DownloadManager 不提供 WorkManagerJobScheduler 中可用的所有调试和测试功能。

传输数据到或从本地设备

如果可用,请使用特定 API(如 配套设备管理器);否则,使用 connectedDevice 前台服务

转码媒体

使用新的 mediaProcessing 前台服务类型.

完成一个简短的关键任务

使用 shortService 前台服务.

处理文件(例如,将数据传输到或从 SD 卡中传输数据,调整内容大小,或加密或解密数据)

如果任务可以在三分钟内完成,使用 shortService 前台服务。否则,使用 WorkManager

使用用户发起的数据传输 API

如果您的应用程序需要将数据传输到远程服务器,您可能想要使用新的用户发起的数据传输 API。如果以下情况属实,这些 API 是合适的

  • 用户已启动数据传输
  • 您需要让用户了解数据传输进度
  • 如果系统中断传输,会对用户体验造成不利影响

如果这些条件中的任何一个不满足,您应该 使用 WorkManager

例如,媒体应用程序可能允许用户下载专辑以供本地播放。如果用户想要下载播放列表并立即播放,您可能想要使用用户发起的数据传输 API。另一方面,如果用户希望下载的播放列表在后台定期更新而无需用户干预,那么 WorkManager 将是更好的选择。

有关更多信息,请参阅有关 将前台服务迁移到用户发起的数据传输作业 的文档。

使用 WorkManager

在大多数情况下,当您需要安排工作时,WorkManager 是最佳选择。您必须以能够被系统中断或推迟的方式设计任务。有关更多信息,请参阅 WorkManager 文档

以下是一些在您从前台服务迁移到 WorkManager 时可能会有所帮助的注意事项

  • 如果您需要尽快运行工作,您可以 安排一项快速工作请求。此选项在您响应广播、精确闹钟或高优先级 FCM 消息时安排工作时特别有用。
  • 如果您需要定期运行工作,您可以 安排周期性工作。周期性工作请求允许您大致指定工作运行的频率,但不保证特定时间。这样一来,系统就可以安排来自不同应用程序的工作请求以平衡对设备的需求。
  • 您应该 定义工作约束以指定运行作业的正确情况。例如,如果您的应用程序需要下载非紧急资源,您可能会指定作业应在设备充电并连接到非计费网络时运行。然后,WorkManager 可以在平衡系统负载的时间运行您的作业。
  • WorkManager 可以根据需要自由取消和重试作业。例如,用户可能在作业运行时关闭设备;系统可以在设备再次可用时重试该作业。请确保您设计并测试您的工作流,以确保取消和重试循环正常工作。

使用更具体的前台服务类型

如果您无法切换到其他方式进行后台工作,您可能仍然需要使用前台服务。在这种情况下,您应该找到合适的服务类型来代替 dataSync。由于您的代码已经在使用前台服务,因此此迁移非常简单;您只需要选择合适的前台服务类型,并确保您的应用程序满足该服务的规定。

如您所知,在考虑使用前台服务时,您应该考虑是否存在针对您的用例的更好的 替代 API

使用短时服务前台服务

如果您的应用程序需要执行简短的关键任务,shortService 前台服务可能是最佳选择。以下是一些可能适合使用 shortService 前台服务的情况

  • 用户启动操作(例如将数据同步到服务器),您希望确保即使用户立即将应用程序发送到后台,操作也能完成。
  • 将内存中的信息保存到持久存储中。
  • 对信息进行加密或解密。

有关完整信息,请参阅 shortService 文档

使用连接的设备前台服务

如果您需要将数据传输到另一个本地设备,您可能希望使用 connectedDevice 前台服务。以下是一些可能需要执行此操作的常见情况

  • 与蓝牙附件(如耳机或智能手表)进行通信
  • 通过 USB 连接、NFC 或本地互联网连接将数据传输到本地连接的设备

但是,在这些情况下,您可能可以使用 配套设备管理器 连接到设备,而不是使用前台服务。如您所知,如果针对您的用例提供了专用 API,那么通常是比使用前台服务更好的选择。

使用新的媒体处理前台服务

如果您需要处理媒体数据,可以使用新的 mediaProcessing 前台服务。如果您的应用程序面向 Android 15 或更高版本,则可以使用此服务类型。例如,如果您的应用程序需要将媒体从一种格式转换为另一种格式以供播放,则此服务类型是合适的。有关更多信息,请参阅 媒体处理前台服务文档

其他资源

有关此前台服务更改的更多信息,请参阅以下其他资源