Google Drive Android SDK同步本地文件夹策略

时间:2018-07-12 03:34:06

标签: android google-drive-api google-drive-android-api fileobserver

我通读了开发文档,示例代码和与SO相关的问答,似乎Google Drive Android SDK不包含任何自动同步本地文件夹的功能。因此,我将自己构建一个,这里是策略:

  • 获取本地文件夹的文件列表
  • 获取远程文件夹的文件列表
  • 存储到状态文件(带有文件名,父文件夹名称,位置(本地或远程),状态(已同步,上载,下载,在队列中)的json字符串或数据库表)
  • 创建同步服务以在文件夹未同步(任何文件处于未同步状态)时上传或下载文件
  • 更新状态文件(如果有任何远程更改),并启动同步服务(使用drive change event
  • 更新状态文件(如果有任何本地更改),并启动同步服务(使用FileObserve

在搜索过程中,我发现了Transfer data using sync adapters lesson,但不确定在这种情况下是否有用。如果您有任何建议或想法,请告知。谢谢。

1 个答案:

答案 0 :(得分:2)

几个指针

  1. 您需要区分内容/媒体同步与元数据同步。例如。如果重命名文件,则只想同步新文件名,而不同步文件内容。因此,您需要两个状态标志。如果使用V2 API,则可以使用ETAG,但它们在v3中已消失。因此,您可能想使用MD5校验和来检测更改。
  2. 您需要通过递归或使用通用父文件夹来处理子文件夹。
  3. 在更新本地文件,同步到GDrive文件时防止出现同步循环,然后该文件会显示为GDrive上的更改并触发下载。
  4. SyncAdapters是您的朋友,尽管起初似乎是敌对的。