我有一个网络服务器,用于托管我在Android平板电脑上构建的应用程序的数据。数据变化相当频繁,但我发现平板电脑和手机并不总是与数据连接,用户已经可以访问他们以前查看过的数据。
我希望应用程序尽可能从网络服务器提取数据,并且当不可能时,从手机上提取SQLite服务器(或任何正确的方法)。
是否已经设置了实施或实践来执行此操作?如果是这样,实现这样一个功能的当前方法是什么?是否可以采用相同的方法对数据进行更改,然后在数据连接恢复时推送这些更改?
答案 0 :(得分:4)
不确定这是否有帮助,但我有类似的要求,发现一个名为memento数据库的Android应用程序基本上有一个同步按钮,所以它使用手机存储数据,然后同步到谷歌驱动器电子表格,你也可以更新电子表格,当用户在Android上单击同步时,它将更新其本地数据库。这是否适用于多用户环境我不太确定,但您可能能够剖析应用程序或使用类似的方法?
问候
(ps我与我提到的应用无关)
答案 1 :(得分:2)
据我所知,目前还没有一个共同的框架。这里有很多帖子涉及图像缓存,它可以很容易地适应,但我所知道的完全概括或专门用于离线观看。也就是说,大多数解决方案只适用于URL和文件,因此如果您的数据非常简单,它可以相当容易地工作。这在很大程度上取决于您的数据是什么以及您计划如何显示它。如果它包含要在WebView中显示的网页,那么它可能会变得烦人,因为那时你必须遍历链接(包括图像,css,javascript等)并缓存它们。但是,如果您正在处理特定的孤立URL或结构化数据,您可以从中轻松解析所有相关URL,那么它就会容易得多。
这是一个这样的面向图像的解决方案:https://github.com/ZaBlanc/WebImageView
一般方法相当简单。它可能是这样的:
您还必须处理缓存过期策略以及如何显示数据等内容,但可能只是一个开始。
如果你正在考虑双向同步,那么它将变得更加困难。您必须考虑锁定和冲突(两个人可以同时更新同一个项目吗?如果是,那么会发生什么?),原子性(您是否有相关项目只有在更新/添加时才有意义?),数据验证(如果用户发送错误数据会怎样)以及更多内容。这可能就是为什么没有人提出任何事情(我知道)。它非常有用,但它可能会非常复杂,并且真正涉及客户端和服务器的工作。