【问题标题】:android application offline mode, local sqlite database synchronisation with distant databaseandroid应用离线模式,本地sqlite数据库与远程数据库同步
【发布时间】:2013-03-19 07:56:12
【问题描述】:

我有一个 postgreSql 数据库,它由 android 应用程序通过 Web 服务进行操作。 我想知道为我的应用程序制作离线模式的最佳方式是什么。

我的第一个想法是制作一个 sqlite 本地数据库,当设备无法访问网络时使用

我想知道是否有现成的工具,一旦设备可以访问网络,它会使 同步 与现有的 postgres 数据库更容易

【问题讨论】:

  • 请注意,如果在断开连接的情况下可以在两个数据库中修改数据,则没有简单的解决方案。发生冲突时该怎么做只能由应用程序(或用户)决定。
  • @minhaz 我了解了一些关于 SyncAdapter 的知识,但我不确定它对我想做的事情有帮助。例如,我的应用程序可能会离线几天,它应该允许用户在没有 Web 访问的情况下使用本地数据“正常”工作,一旦设备再次访问互联网,我需要更新/删除/创建数据库项目在离线模式下更改
  • 现在你有两个问题,一是让你的应用离线工作,二是同步你的数据库到云端。最好一次解决一个问题。您必须使用一些临时缓存来跟踪所有已保存和完成的工作,并且当您的用户连接到 Internet 时,这些工作会一一处理。

标签: android sqlite postgresql synchronization offline-mode


【解决方案1】:

这里有一些非常基本的想法。

在理想情况下,您会同步一般的工作元数据,而您的离线模式将允许仅插入工作流基于该元数据添加新数据。这将使以后同步事情变得相当容易,只需按顺序发布到 Web 服务,然后在数据库中进行标记或完全删除行。

如果你使用类似的东西,你可能真的不想将 sqlite 当作 rdbms 来处理。您可能想要的是一个宽表结构,主要用于存储待处理的需求,或者存储您稍后将发送的 json 有效负载之类的东西。这意味着您的本地数据库将不是围绕您的数据模型而是围绕您的 Web 服务 API 设计的。

如果您必须进行更新(覆盖工作流程),那么您需要投入大量精力来解决冲突,但基本上同样适用。您可能想要添加更多信息,例如时间戳和其他与解决冲突相关的数据。

但是,您应该能够从那里重新使用您的应用程序 API 来进行同步,而不是寻找特定的工具来进行同步。

【讨论】:

  • 感谢您的回答,我想知道是否有一个神奇的工具可以做到这一点,但现在我几乎可以肯定这个“魔法”还不存在。
  • 如果您必须进行双向同步,我不确定“魔术”是否真的可行。有一些解决冲突的方法,但在那里不可能一刀切。对于单向同步,这是合理可行的,但我无法理解为什么您已经构建的 Web 服务不会更好.....
  • 解决这个问题的灵丹妙药目前似乎只存在于Telerik 的 iOS 上,它只适用于 iOS,根据他们的网站,它很快就会在 Android 设备上可用。
猜你喜欢
  • 1970-01-01
  • 2017-01-06
  • 2014-06-17
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多