באפליקציות רבות צריך להעביר נתונים ברקע. הדף הזה יעזור לכם למצוא את הגישה המתאימה לצרכים שלכם.
迁移用例
本部分介绍了应用需要转移数据的一些常见情况 数据传入或传出设备,还可帮助您根据自己的需求 情况。
- 通过网络传输数据
如果转移是由用户发起的,并且您需要保留用户 有关传输进度的信息,请使用用户发起的数据传输 API。否则,请使用 WorkManager 或 适当的前台服务类型。
如果您需要安排下载时间,还可以使用
DownloadManager
。DownloadManager
负责管理应用的 并负责在下载失败、设备重新启动、 以及网络连接方面的变化不过,DownloadManager
并不提供 调试和测试功能(在WorkManager
和JobScheduler
。- 将数据传输到本地设备或从中传输数据
使用特定的 API(如果有),例如配套设备 经理);否则,使用
connectedDevice
前景 服务。- 对媒体转码
- 完成一项简短的关键任务
- 处理文件(例如,将数据传输到 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 适用于您的用例,那就是 这通常是比使用前台服务更好的选择。
使用新的媒体处理前台服务
如果您需要处理媒体数据,可以使用新的 mediaProcessing
前台服务。如果您的应用以 Android 为目标平台,则可以使用此服务类型
15 或更高版本。例如,如果
应用需要将媒体从一种格式转码为另一种格式,才能播放。对于
请参阅
媒体处理前台服务文档。
其他资源
如需详细了解对前台服务的这项变更,请参阅以下内容 其他资源: