Android中的向上同步和向下同步?

Nar*_*rma 26 android synchronization background-process point-of-sale android-syncadapter

我正在开发一个销售点应用程序,需要非常好的同步机制.我们有Magento数据库.安卓设备有SQLite本地Db.现在我们需要以下列方式进行同步:

本地------同步到--------------->服务器(向上同步)

服务器------同步到--------------->本地(向下同步)

有两件事:

1)写(如何保重?)

对于我在本地进行的每个更改,它将直接将本地同步到服务器

2)回写(如何保养???)

每当服务器发生变化时,我们都需要将所有本地服务器与服务器同步.

因此,任务是:识别服务器更新

并同步我们的当地人.就像有4个设备在商店中运行,我们通过一个设备添加了一个新客户.现在我希望其他三个设备本地数据库也更新了有关该客户和服务器的信息也已更新.

我听说过后台线程并在一段时间后运行线程.但是,这样做的最佳方法是什么,不会影响应用程序.此外,所有Big Retail商店都使用同步过程.他们用的是什么?

任何帮助表示赞赏.

Del*_*019 12

这完全取决于你的数据库结构......

DATABASELOCAL (device)SERVER

现在

您需要TIMESTAMP fieLd添加到TABLESSYNC中实际要保留的内容.

当你在服务器上进行任何更改时,TIMESTAMP将在那里进行更新,对于本地数据库也是如此,你现在要做的也是如此.

运行中,将保持在比较后台服务TIMESTAMPSLOCAL与的SERVER.

现在,你必须把条件是如果TIMESTAMPSERVER是较新的到的LOCAL,然后从带来的变化SERVERLOCAL,

and vice versa will be the condition to take changes from LOCAL to SERVER.
Run Code Online (Sandbox Code Playgroud)

此外,您必须决定运行此服务的频率.

或者:

您可以在那里制作表格,以SERVER存储LAST_SYNCHED特定设备的日期

每当您登录您的设备(或您希望它执行此操作的任何其他特定事件)时,服务器将检查 -

  • 当这个设备是LAST_SYNCHED时
  • 然后它将它与今天的日期进行比较
  • 并将检查这些日期之间实际发生的最新情况,并将更改发送到LOCAL(设备)

对于LOCAL(设备)到SERVER,反之亦然

你必须玩TIMESTAMPS休息,你可以有自己的逻辑如何构建数据库.

当我成为这样一个类似项目的一部分时,我告诉过你我所观察到的

编辑

上面的过程定义了如何将设备与服务器同步我的意思是策略..

如果您希望设备从服务器获得通知何时同步而不是反复点击WEB-SERVICE ..

您可以使用PUSH NOtification,GCM其中一个向设备发送推送通知,您可以将其集成到您的项目中


San*_*osh 6

对于同步,您需要处理以下两种情况.

  1. 如何以及何时接收服务器更新
  2. 如何识别本地未同步的数据

如何以及何时接收服务器更新:

要接收更新,我们可以使用GCM(Google Cloud Messaging).如果在服务器中进行任何更新,则服务器会向所有设备发送推送消息.设备将接收该推送,并根据消息,设备将从服务器下载数据.(我认为这比连续点击服务更好的方法,如某些特定的间隔,如轮询)

为了仅从服务器接收更新的数据,服务器维护所有表的modified_timestamp列.首次设备将发送空时间戳,以便服务器使用服务器时间戳将所有数据发送到设备.设备接收新数据并更新本地数据库并保存最新的服务器时间戳.对于下次获取服务器更新,设备将发送存储的服务器时间戳,然后服务器将仅在该时间戳之后仅发送已修改的数据.对于每个响应服务器发送服务器时间戳,设备需要存储该时间戳并在调用服务时需要使用.

如何识别本地未同步的数据:

为了发送本地更新,本地数据库需要在表中维护一个"isSynced"列.如果在本地isSynced中修改的任何行将为false,则在成功将本地数据同步到服务器isSynced后将为true.这样我们就可以使用服务器处理最新的本地数据.

更新:

您可以在此开发人员链接中找到更多信息