Data transfer background task options

Many apps need to transfer data in the background. This page helps you find the right approach for your needs.

迁移用例

本部分介绍了应用需要转移数据的一些常见情况 数据传入或传出设备,还可帮助您根据自己的需求 情况。

通过网络传输数据

如果转移是由用户发起的,并且您需要保留用户 有关传输进度的信息,请使用用户发起的数据传输 API。否则,请使用 WorkManager适当的前台服务类型

如果您需要安排下载时间,还可以使用 DownloadManager.DownloadManager负责管理应用的 并负责在下载失败、设备重新启动、 以及网络连接方面的变化不过,DownloadManager并不提供 调试和测试功能(在 WorkManagerJobScheduler.

将数据传输到本地设备或从中传输数据

使用特定的 API(如果有),例如配套设备 经理);否则,使用 connectedDevice 前景 服务

完成一项简短的关键任务

使用 shortService 前台服务

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

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

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

如果您的应用需要将数据传输到远程服务器,您可能需要使用 新的用户发起的数据传输 API。如果 以下为 true:

  • 用户开始了数据传输
  • 您需要让用户随时了解数据转移进度
  • 如果系统中断传输,则会对用户体验造成不利影响

如果不满足其中任何条件,您应该使用 WorkManager

例如,媒体应用可能允许用户下载专辑以在本地播放。如果 用户想下载播放列表并立即播放,则不妨使用 由用户发起的数据传输 API。另一方面,如果用户希望 下载的播放列表,以便在没有用户的情况下定期在后台更新 建议,使用 WorkManager。

如需了解详情,请参阅有关将前台服务迁移到 由用户发起的数据传输作业

使用 WorkManager

在大多数情况下,当您需要调度工作时,WorkManager 是最佳选择。 您必须将任务设计为可以中断或延迟 错误。如需了解详情,请参阅 WorkManager 文档

从前台迁移时,请注意以下事项 发送到 WorkManager:

  • 如果您需要尽快运行工作,可以安排 加急工作请求。 调度工作以响应广播、精确闹钟或 高优先级 FCM 消息。
  • 如果您需要定期运行工作,可以安排定期运行 工作。定期工作请求可让您大致指定 工作将会运行,但无法保证具体时间。这样, 系统调度来自不同应用的工作请求,以平衡需求 。
  • 您应定义工作约束条件来指定适当的 运行作业所需的条件例如,如果您的应用需要下载 非紧急资源,则可以指定作业在运行 设备正在充电并已连接到不按流量计费的网络。WorkManager 可以 然后在适当时间运行作业,以平衡系统负载。
  • WorkManager 可以在必要时取消和重试作业。例如: 用户可能会在作业运行期间关闭设备;系统可以 然后在设备恢复可用状态时重试作业。确保设计出 并测试您的工作流程,确保“取消并重试”循环正常进行 正确。

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

如果您无法改用其他方式执行后台工作,您可能仍然会 需要使用前台服务。在这种情况下,您应该 服务类型来代替 dataSync。由于您的代码已在使用 前台服务,因此迁移过程非常简单;您只需选择 适当的前台服务类型,并确保你的应用满足 服务要求

与往常一样,在考虑使用前台服务时,您应该 考虑是否有更适合您用途的备用 API 这种情况。

使用短服务前台服务

如果应用需要执行简短的关键任务,则会使用 shortService 前台 可能是最佳选择在以下情况中,shortService 前台服务可能适合:

  • 用户发起一项操作(比如将数据同步到服务器),并且您希望 以确保操作完成,即使用户立即将 应用在后台运行时
  • 将内存信息保存到永久性存储空间。
  • 加密或解密信息。

如需了解完整信息,请参阅 shortService 文档

使用已连接的设备前台服务

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

  • 与蓝牙配件(例如耳机或智能手表)通信
  • 通过 USB 连接、NFC、 或本地互联网连接

不过,在这些情况下,您或许可以使用配套设备 管理器来与设备连接,而不是使用前台服务。 与往常一样,如果某个特殊用途的 API 适用于您的用例,那就是 这通常是比使用前台服务更好的选择。

其他资源

如需详细了解对前台服务的这项变更,请参阅以下内容 其他资源: