云同步策略

时间:2014-11-30 05:30:03

标签: android google-app-engine caching cloud backend

首先:这将使用Google App Engine和Android实现。谷歌云SQL /数据存储,但它更多的是我对此感到困惑的过度策略。

我正在创建一个能记录活动的Android应用。然后,我希望能够将此活动同步到云,并在注册到用户的任何其他设备上查看/编辑活动。身份验证,设备注册以及我可以解决的所有细节,以及我遇到问题的同步策略更多。

要求将是:

  1. 活动记录在用户设备上
  2. 活动在录制后存储在云中
  3. 设备应检查云端是否有更新的活动列表,并维护本地缓存'活动(将是一个SQLite数据库)显示给用户。
  4. 这些是我对如何实现这一点的初步想法:

    场景:录制活动

    1. 在设备上记录活动
    2. 一旦录制上传数据到云
    3. 强制与云同步以更新本地缓存
    4. 显示用户本地缓存的活动(由于之前的同步步骤,将包括最近添加的活动)。
    5. 场景:更新活动

      1. 用户选择缓存活动
      2. 进行更改
      3. 将更改上传到云端(并以某种方式将其标记为已修改?不确定这将如何工作)
      4. 强制与云同步以更新本地缓存
      5. 显示用户本地缓存的活动(由于之前的同步步骤,将包括活动的更新内容)。
      6. 问题:将本地缓存与云数据同步

        我不确定如何实现同步(即分别是前面场景的步骤3和4)。我不想丢弃本地缓存并重新下载所有内容以确保最新数据,因为这看起来非常低效。我希望只是下载缓存中不包含的活动,并更新缓存中但自上次同步以来已更改的活动。

        是否有任何最佳实践/众所周知的同步模式(易于理解)可以帮助我实现这一目标?

        亲切的问候。

1 个答案:

答案 0 :(得分:2)

您还需要考虑连接丢失/重试,电池/电源效率以及可能应用自定义同步算法。

Android已经有一个出色的模式/ API来解决这些问题,并以有效的方式处理与后端服务器的后台同步。

关注the official android guide for sync adapter API pattern,如果您不需要它们,则不必实现内容提供程序或身份验证器,只需为它们实现存根。

以下是一些帮助您完成的示例项目......