我正在构建一个类似 POS 的 Android 应用程序,即使数据连接暂时丢失,它也需要工作。
想法是如果数据连接可用,立即向服务器报告所有事务。如果没有,将其本地存储在 SQLite 中,稍后在连接可用时同步。
第一个计划是将单个事务保存在与服务器上维护的相同的通用数据库结构中,但是由于服务器上有许多不同类型的事务和关系,这将有效地从数据库中复制整个数据库结构手机本身的服务器。
另一种方法是仅保存用于通知服务器更改的最终 HTTP 请求。这种方法的优点是它只需要一个表,只存储 URL、请求内容、方法等。但是可能会有一些调用需要在响应上执行代码,这些调用将作为匿名内部类实现.这种方法的唯一问题似乎是序列化这些匿名内部类,以便它们可以从数据库加载并在(可能的)手机重启后执行。
实现这个的最佳方法是什么?选项A还是选项B?如果选项 B,是否真的有可能序列化和反序列化匿名内部类(在这里有效地用作闭包)?
最佳答案
对于选项 A,您可能希望考虑 CouchDB 来处理设备/服务器复制。
关于java - 离线同步 Android 应用的通用架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018563/