【发布时间】:2013-03-25 12:39:10
【问题描述】:
我正在开发一个应用程序,我想实现一个功能,可以在相同的用户设备之间共享收藏夹、书签等。所以,我想实现 iCloud 之类的东西。
我想到了 2 个可能的想法:备份管理器和 Google 云端硬盘。 我认为备份管理器是最简单的解决方案,可以满足我的需求,但也许我错了:
注意:备份服务不是为同步应用而设计的 与其他客户端的数据或保存您想要访问的数据 在正常的应用程序生命周期中。你不能读或写 按需备份数据,不能以任何方式访问它 通过备份管理器提供的 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 云端硬盘中找到答案?
【问题讨论】:
-
备份服务用于在用户重新安装应用程序时恢复用户偏好。在您发布的说明中,它说不要使用备份服务来做您想做的事情。那你为什么要这么做呢?
标签: android google-drive-api backup sharedpreferences