【问题标题】:Android cloud - Backup Manager vs DriveAndroid 云 - 备份管理器与驱动器
【发布时间】: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)onBackuponRestore 未被调用(onCreate 被调用)。但是,再一次:

备份请求不会导致立即致电您的 onBackup() 方法。相反,备份管理器会等待 适当的时间,然后为所有应用程序执行备份 自上次执行备份后请求备份。

这是否意味着我只能在 Google 云端硬盘中找到答案?

【问题讨论】:

  • 备份服务用于在用户重新安装应用程序时恢复用户偏好。在您发布的说明中,它说不要使用备份服务来做您想做的事情。那你为什么要这么做呢?

标签: android google-drive-api backup sharedpreferences


【解决方案1】:

您是正确的,您不应该为此使用BackupManager。您将需要使用第三方服务来保存您的确切数据类型。所以你可以:

  • 使用 Google Drive 或 Dropbox 等提供 API 的服务,您可以在其中上传(和下载)任何类型的文件,并以您选择的格式(XML/JSON/二进制)存储您的数据。这里的好处是:
    • 您不需要服务器端应用程序来存储数据,因此开发工作量更少
    • 用户拥有自己的数据,这对某些用户来说可能很重要
  • 编写一些自定义服务器端代码,为您的应用提供特定的 API。您可以为此使用Google App Engine。显然,如果你有很多用户,缺点是增加了开发工作量和来自 appengine 的潜在费用。然而,如果你走这条路,你也有很多好处:
    • 您不会在用户的 Drive 或 Dropbox 帐户上浪费空间,
    • 用户不喜欢在 3rd 方应用中输入他们的 Drive / Dropbox 凭据,
    • 您可以使用漂亮的功能,例如GCM
    • 您将数据存储在一个实际的数据库中,因此您可以根据需要对其进行结构化,并且您也拥有它。

你选择:)

【讨论】:

  • 感谢您的回复。在这种情况下,我想我会使用 Google Drive 或 Dropbox API 而不是 Google App Engine,因为这个应用程序不会使用服务器端。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2011-02-24
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多