Android - 离线模式 - 同步数据

时间:2018-04-26 07:47:11

标签: android api synchronization offline-mode

我正在研究Android应用程序,它是驱动程序应用程序。驱动程序应用程序的主要部分是为特定客户端提供订单。

司机将收到大量订单,他可以更改每个订单的状态,例如(in_transit,暂停,交付,取消,拒绝)。删除互联网连接后,驱动程序将被阻止执行任何操作。

我的目标是如何让应用程序在脱机模式下运行,一旦删除了Internet连接,驱动程序仍然可以对每个订单执行操作,并且可以在本地更改每个订单的状态,从new到in_transit以交付等等。一旦互联网连接恢复,我就可以将数据同步/推送到服务器。

所以我的问题是: - 我怎样才能做到这一点? - 我应该保存什么来同步api请求或订单状态?

谢谢,

5 个答案:

答案 0 :(得分:2)

首先在SQLite数据库中保存订单状态。然后,一旦达到互联网连接,尝试同步所有数据。

答案 1 :(得分:2)

您可以在自己的应用中执行以下步骤:

  1. 使用包含停靠点和项目信息的架构创建本地数据库。
  2. 一开始,当司机开始他的旅程时,他必须拥有互联网。获取所有交付信息并将其保存到本地数据库以供使用。
  3. 从本地数据库向驱动程序显示此列表。
  4. 您可以将 2个标志命名为 delivery_status 同步。最初,delivery_status可以是 in_transit 同步标记必须为false
  5. 创建一个后台服务,以一定的时间间隔检查Internet连接。如果没有互联网,服务将停止,没有任何反应。但是,如果有Internet,则从本地数据库中获取所有未同步的**(synced = false)**数据,并将数据发送到服务器。从服务器成功响应后,将此同步标志标记为true。每隔一定时间间隔重复此步骤以检查未同步的数据并继续将其发送到Web服务器,直到所有同步标志为真。
  6. 通过这种方式,您可以让司机在没有互联网的情况下交付物品,一旦互联网可用,您的后台服务就会将状态上传到服务器。

答案 2 :(得分:2)

首先从服务器获取所有订单并保存到本地数据库以供本地数据库使用SQLite

驱动程序在本地更新状态,即在SQLite本地数据库中。

使用后台服务检查互联网连接是否每15分钟一次。

在本地数据库中创建一个状态表,如果互联网连接可用,则将数据发送到服务器并将本地创建表中的状态更改为true,默认情况下为false

下次发送数据时,本地数据库中的数据状态为false。

答案 3 :(得分:1)

问题是您需要在本地保存数据,以便它可以持续存在,直到您有机会将其发送到服务器。

您的第一个决定是应用程序关闭时您想要的行为。 如果您希望即使用户关闭应用程序也会保存它,那么您需要将该数据写入磁盘。您可以通过写入文件(使用json),将数据保存在SharedPreferences(如果您只有少量数据)或使用数据库来实现。如果您拥有大量数据,数据库是最常用的方法。

就数据库而言,Android本身支持SQL lite,但对于初学者来说这可能很难。我建议调查Realm,我发现它非常直观。

如果您不介意在用户关闭应用时忘记数据,那么您可以将数据放入众多Java collections中的一个,如ArrayList,{{ 1}}或LinkedList,直到连接恢复。但是,正如我所说,如果应用程序在发送数据之前关闭,您将面临丢失此数据的风险。

答案 4 :(得分:0)

您也可以使用Couch base db。通过同步门方式将数据同步到服务器