8

谁能解释一下Android Backup API 的用途是什么?

我已经阅读了开发人员文档中的Using the Backup API and Data Backup,但我仍然不清楚。

何时备份和恢复数据?

特别是在这些情况下:

  1. 用户在设备 1 上安装我的应用程序,备份数据,然后用户在设备 2 上安装我的应用程序。来自设备 1 的用户数据是否会自动放在设备 2 上?如果是这样,在安装应用程序或启动应用程序时会发生这种情况吗?

  2. 我的应用程序安装在 2 台设备上。当在设备 1 上进行更改时,是否会在设备 2 上自动进行?如果没有,是否至少可以在设备 2 上进行更改?

在一个文档中,它说

备份服务不是为与其他客户端同步应用程序数据或保存您希望在正常应用程序生命周期中访问的数据而设计的。您无法按需读取或写入备份数据,也无法通过 Backup Manager 提供的 API 以外的任何方式访问它。

但在另一个方面,

Android 框架可帮助您构建丰富的支持云的应用程序,将其数据同步到远程 Web 服务,确保您的所有设备始终保持同步

这对我来说似乎很矛盾。

更具体地说,我想跨设备持续同步单个数据库文件(小于 20 KB)。备份 API 可以做到这一点吗?

4

2 回答 2

3

编辑:所以回答你的问题 - 不,这不是同步数据的可靠方法。

当用户购买新设备或重置其现有设备时,他们可能会期望当 Google Play 在初始设置期间将您的应用恢复到他们的设备时,与该应用关联的先前数据也会恢复。默认情况下,这不会发生,并且用户在您的应用中的所有成就或设置都会丢失。

正如我所看到的,您的应用程序正在将数据存储到云中。您将文件推送到备份服务器并使用 API 密钥(每个用户的谷歌帐户唯一)允许您将备份下载到其他设备,但只能在安装应用程序期间或通过手动请求进行访问。该文档指出:

备份服务不是为与其他客户端同步应用程序数据或保存您希望在应用程序生命周期中随机访问的数据而设计的。

据我了解(我自己没有实现),您不能将其用作云同步实时数据的可靠方法。

清单可能会启动数据处理并确定是否应推送备份。

未来的某个时候,备份管理器会调用你的备份代理的 onBackup() 方法

恢复备份不是手动的:

通常,您不必手动请求恢复,因为它会在您的应用程序安装在设备上时自动发生。但是,如果需要触发手动恢复,只需调用 requestRestore() 方法即可。

于 2013-01-13T01:25:08.147 回答
3

叹息,文档不应该在任何地方说“同步”。我应该提交一些补丁来解决这个问题。:) 此机制并非旨在提供两个设备之间的数据交换。

Android 中备份基础架构的主要目标是为您的用户在设置新设备时提供良好的体验,例如当他们购买平板电脑以配合手机使用时,或者当设备掉落和损坏并且他们设置时一个替代品。这个想法是新设置的设备处于熟悉的状态,所有相同的应用程序及其数据完好无损,适用时相同的壁纸图像等。

同步管理器工具的用途是在设备之间实时保持数据同步。

于 2016-01-08T21:02:06.800 回答