我正在开发一个应用程序,我想实现一个功能,可以在相同的用户设备之间共享,比如收藏夹、书签等。所以,我想实现像 iCloud 这样的东西。
我遇到了 2 个可能的想法:备份管理器和 Google Drive。我认为备份管理器是最简单的解决方案,可以满足我的需求,但也许我错了:
注意:备份服务不是为与其他客户端同步应用程序数据或保存您希望在正常应用程序生命周期中访问的数据而设计的。您无法按需读取或写入备份数据,也无法通过 Backup Manager 提供的 API 以外的任何方式访问它。
注意:Android Backup Service 提供的备份传输不保证在所有支持备份的 Android 设备上都可用。有些设备可能支持使用不同的传输方式进行备份,有些设备可能根本不支持备份,并且您的应用程序无法知道设备上使用了哪种传输方式。
由于我将此信息存储在 SharedPreferences 中,因此我按照 Google 的建议 ( http://developer.android.com/guide/topics/data/backup.html#BackupAgentHelper )扩展BackupAgentHelper来开始实施。
...每次用户更改某些数据时,您的应用程序应调用 dataChanged(),它将备份请求添加到备份管理器队列。
因此,例如,每次我更改数据、保存或删除书签时,我都会调用:
BackupManager.dataChanged(C.PROJECT_PATH);
当我的应用程序启动时,我调用:
contentBackupManager.requestRestore(new RestoreObserver() {})
一切都已设置好,AndroidManifest.xml 也是如此。
不幸的是requestRestore正在返回!= 0(错误)并且我的 BackupAngent(扩展 BackupAgentHelper)onBackup和onRestore没有被调用(onCreate是)。但是,再一次:
备份请求不会立即调用您的 onBackup() 方法。相反,备份管理器会等待适当的时间,然后对自上次执行备份后请求备份的所有应用程序执行备份。
这是否意味着我只能在 Google Drive 中找到答案?