Alternativas a los servicios en primer plano de sincronización de datos

A menudo, hay mejores alternativas para usar en lugar de un servicio en primer plano de dataSync. Con este documento, encontrarás la mejor alternativa para tu caso de uso.

迁移用例

本部分介绍了应用当前可能使用 dataSync 前台服务的一些常见情况,以及我们建议的替代方案。

通过网络传输数据
如果转移由用户发起,并且您需要让用户了解转移进度,请使用用户发起的数据传输 API否则,请使用 WorkManager
将数据传输到本地设备或从本地设备传输数据
如果有可用的特定 API,请使用特定 API(例如配套设备管理器);否则,请使用 connectedDevice 前台服务
对媒体进行转码
使用新的 mediaProcessing 前台服务类型
完成一项简短的关键任务
使用 shortService 前台服务
处理文件(例如,将数据传输到 SD 卡或从 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 或更高版本为目标平台,则可以使用此服务类型。例如,如果您的应用需要将媒体从一种格式转码为另一种格式以便播放,则此服务类型是合适的。如需了解详情,请参阅媒体处理前台服务文档

其他资源

如需详细了解这项前台服务变更,请参阅下面列出的其他资源: