如果没有互联网连接发送到后端Android,有效的方式存储数据?

时间:2016-06-01 12:49:15

标签: android storage kinvey

我使用kinvey作为后端来存储一些数据。每当用户在电话(Android)上回答一些问题时,数据立即发送给kinvey。但是可能存在用户未连接到互联网的情况,因此发送数据失败。 我想知道是否有任何标准方法来存储尚未以有效方式发送的数据?我还应该多久尝试重新发送尚未发送的数据?我通常只是把它放在一个数据库中,并尝试每30分钟左右发送一次该表中的内容,如果发送成功则清除表格? 这会是理想的吗?另外我看到Kinvey没有自动处理这个问题的机制(如果我错了,请纠正我)。

感谢您提出任何建议。

4 个答案:

答案 0 :(得分:4)

本地数据库是存储数据安全的好地方。问题是你每30分钟发送一次数据,你必须改变这种情况。

以下是步骤:

  1. 检查互联网连接,如果可用,则在线工作,无需在本地存储数据

  2. 如果互联网不可用,则将其存储在本地数据库

  3. 您可以从系统获取互联网连接,无论是否已连接,如果您在此时获得连接与服务器同步数据(无需每30分钟检查一次)(系统始终在广播时进行广播)获得连接)

答案 1 :(得分:2)

您可以查看FirebaseOffline Capabilities中描述了您正在寻找的功能。如果无法从Kinvey迁移 - 则将数据存储在数据库中,并在条件合适时使用JobScheduler将其同步到后端。

答案 2 :(得分:2)

其他答案涵盖了大多数用例。

但是如果您不想使用系统广播,另一种方法是将数据存储在数据库(SQLiteFirebase等)上,并尝试某种{ {3}}使用exponential backoff将数据发送到服务器的策略。 (教程AlarmManager)。

您可以尝试不时检查互联网连接,并发送数据。如果由于某种原因(连接速度慢,连接断开或根本没有连接)失败,请稍后再试。成功后,您可以从数据存储中删除数据,也可以设置isSent = true之类的标记。

答案 3 :(得分:2)

Kinvey正在为其所有SDK推出离线同步功能,目前处于测试阶段。如果您使用iOS或Javascript进行移动开发,请查看" 3.0测试版" SDK' S。你提到你使用Android,很快就会支持该平台。

在您的情况下,您需要一个缓存存储,它将在本地保存数据并在没有网络时自动同步。您不必担心同步的时间或频率。

http://devcenter.kinvey.com/ios-v3.0/guides/datastore#CacheStore

相关问题