在Android中的Google云端硬盘中创建一个独特的文件

时间:2014-01-24 16:44:39

标签: android google-drive-api

我正在使用Google Drive Android API(是的,我知道它仍处于开发人员预览版中),可以在云端硬盘上创建一个可以在所有用户设备上保留数据的文件。

https://developers.google.com/drive/android/create-file

所以,请在手机上使用该应用:

- 检查文件是否存在(按文件名过滤而不是在垃圾箱中)

- 如果存在,则读取并更新带有数据的本地sqlite

- 如果不存在则创建新文件,并从sqlite写入数据。然后请求同步。

- 当用户更改数据时,再次打开文件,写入内容并提交/同步。

我正在测试我在手机上运行的位置,然后在我的平板电脑上运行的情况,并且恰好有多个同名文件被创建,我的应用程序在打开时会感到困惑。我猜有重复项,因为同步有延迟而第二台设备没有找到现有文件,因此创建了一个新文件。

所以,现在我想,我用这个名字(没有标记为垃圾)拉入所有文件并合并它们,然后在除了其中一个之外的所有文件上标记垃圾并称之为当前。随着时间的推移,这将在垃圾箱中留下许多文件。

几个问题:

  1. 无论如何都要创建一个具有唯一名称的文件,或者通过一些独特的句柄拉出来。重复使得使用此Drive产品变得麻烦。

  2. 是否有删除文件,不标记为垃圾,但实际上是删除。合并后,我不想在使用数月之后在某些驱动器上留下数百个标记为垃圾的文件。

  3. 我错过了一些明显的东西吗?我想做的就是不断覆盖最后一个设备的文件以保存数据并调用主副本。然后让其他设备知道它们应该在运行时刷新。现在,我有一个网络工具应用程序,但我也在创建一个游戏,并希望利用相同的机制来保存/持久设备的游戏状态....此时我不太相信Drive是适当的手段。

2 个答案:

答案 0 :(得分:5)

正如您所发现的,标题在Drive中并不是唯一的。但是,Drive中的每个项目都有唯一的标识符。在Android API中,DriveId就是其中的代表。 (在Web API中,它是资源ID)。

创建文件后,您可以将DriveId保存在本地首选项中,以便下次可以通过ID查找它。这将保证您在同一设备上始终拥有相同的文件。

在其他设备上,您可以先按标题进行查询,以确定它是否已存在,然后保存DriveId(如果存在)。

答案 1 :(得分:1)

Google Play Cloud Save专为跨多个设备的轻量级保存状态而设计,包括冲突解决,最初是为游戏构建的(尽管任何应用都可以使用它)。这似乎更适合您想要做的事情,而不是尝试使用Google云端硬盘的完整文件系统方法。