Android 备份服务延迟

Android Backup service delay

我在当前应用程序中使用 Android 备份服务。 我在 docs 上读到

A backup request does not result in an immediate call to your onBackup() method. Instead, the Backup Manager waits for an appropriate time, then performs backup for all applications that have requested a backup since the last backup was performed.

有谁知道从 dataChanged() 请求到实际备份操作大约需要多长时间?

或者完全放弃 Android 备份服务和 select 其他存储可能是一个不错的选择?

此致!

从调用 dataChanged() 到数据实际被推送到备份存储后端的确切时间将因以下几个因素而异:主要是连接性。设备 运行 的 Android 版本也很重要;延迟政策多年来一直在调整。有延迟的原因是为了避免推送大量数据 "unnecessarily," 用尽人们的每月数据配额,同时仍然试图至少保持后端大部分是最新的,这样你就不会丢失大量数据如果您不小心将 phone 掉进河里或其他什么地方,会有很多变化。通常延迟时间长达一个小时,但从 Android M 开始,延迟时间更长(更像是 4 小时)。出于测试目的,您始终可以使用此 adb 命令强制立即备份通过:

adb shell bmgr run

您还可以首先通过对 bmgr shell 工具的不同调用来模拟您的应用调用 dataChanged():

adb shell bmgr backup com.myapps.packagename

(当然,只使用您的应用程序包的真实名称。)

您没有说明您的应用正在使用哪个数据路径——完整数据(Android M 中的新功能)或 key/value(在 Android Froyo 中引入)。 dataChanged() 仅与较旧的 key/value API.

有关

正如上面 Viktor Yakunin 所指出的,备份不是同步的:备份系统的目标是在安装应用程序时无缝传送应用程序的数据,无论是在用户正在设置的新设备上,还是后续在同一台设备上卸载并重新安装该应用程序。如果您想要的是数据 exchange 机制,或者在多个设备上同时维护相同的数据,您应该查看 Sync Manager 或其他类似的第 3 方工具。