我正在研究Android应用程序,它是驱动程序应用程序。驱动程序应用程序的主要部分是为特定客户端提供订单。
司机将收到大量订单,他可以更改每个订单的状态,例如(in_transit,暂停,交付,取消,拒绝)。删除互联网连接后,驱动程序将被阻止执行任何操作。
我的目标是如何让应用程序在脱机模式下运行,一旦删除了Internet连接,驱动程序仍然可以对每个订单执行操作,并且可以在本地更改每个订单的状态,从new到in_transit以交付等等。一旦互联网连接恢复,我就可以将数据同步/推送到服务器。
所以我的问题是: - 我怎样才能做到这一点? - 我应该保存什么来同步api请求或订单状态?
谢谢,
答案 0 :(得分:2)
首先在SQLite数据库中保存订单状态。然后,一旦达到互联网连接,尝试同步所有数据。
答案 1 :(得分:2)
您可以在自己的应用中执行以下步骤:
通过这种方式,您可以让司机在没有互联网的情况下交付物品,一旦互联网可用,您的后台服务就会将状态上传到服务器。
答案 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。通过同步门方式将数据同步到服务器