我正在开发一个需要非常好的同步机制的销售点应用程序。我们有 Magento 数据库。android 设备有 SQLite 本地数据库。现在我们需要通过以下方式进行同步:
本地 ------同步到---------------> 服务器(向上同步)
服务器------同步到---------------> 本地(向下同步)
有两件事:
1) 写信(如何照顾??)
对于我在本地所做的每一项更改,它都会直接将我的本地同步到服务器
2)回写(如何照顾???)
每当服务器发生变化时,我们需要将所有本地人与服务器同步。
因此,任务是:识别服务器更新
并同步我们的本地人。 就像商店里有 4 台设备正在运行,我们通过一台设备添加了一位新客户。现在我希望其他三个设备的本地数据库也更新了有关该客户和服务器的信息也更新了。
我听说过一段时间间隔后的后台线程和运行线程。但是,在不影响应用程序的情况下,最好的方法是什么。此外,所有大型零售商店都使用同步过程。他们用来做什么?
感谢任何帮助。
最佳答案
这完全取决于你的数据库结构...
您在 LOCAL (device)
和 SERVER
DATABASE
现在
您需要将 TIMESTAMP 字段
添加到您实际上想要保持同步的 TABLES
中。
当您在服务器上进行任何更改时,TIMESTAMP
将在那里更新,本地数据库也是如此,您现在要做的就是。
在后台运行一个服务,它会不断比较LOCAL
的TIMESTAMPS
和SERVER
的。
现在您必须设置条件,如果 SERVER
的 TIMESTAMP
比 LOCAL
的更新,则从 SERVER
到 本地
,
and vice versa will be the condition to take changes from LOCAL to SERVER.
您还必须确定运行此 SERVICE 的频率。
或者:
您可以在 SERVER
上创建表格,该表格将存储特定设备的 LAST_SYNCHED
日期
每当您登录您的设备(或您希望它执行此操作的任何其他特定事件)时,服务器都会检查 -
- 此设备上次同步时
- 然后它将它与 TODAYS DATE 进行比较
- 并将检查这些日期之间实际发生的更新 将更改发送到本地(设备)
本地(设备)到服务器反之亦然
您必须使用 TIMESTAMPS
休息,您可以拥有自己的逻辑来构建数据库。
我告诉过你我在参与此类类似项目时所观察到的情况
编辑
上述流程定义了如何将设备与服务器同步我的意思是策略..
如果您希望您的设备在同步时从服务器获得通知,而不是反复点击 WEB-SERVICE ..
你可以使用PUSH NOTification,GCM
是其中之一,可以向设备发送推送通知,你可以将它集成到你的项目中
关于android - Android中的向上同步和向下同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336054/