我有一个移动应用程序,每秒都会检索纬度,经度,速度......等等。
此应用程序将这些值存储在.csv文件中,并使用DATA连接将它们发送到远程服务器(使用JSON格式化它们)。服务器(Apache,MySQL)检索数据并将其放入数据库中。然后,用户可以在网站上进行连接,例如使用GM生成跟踪,或生成统计信息(平均速度......)。
但有时,由于景观(山脉),数据连接失败。因此,即使移动设备继续存储数据,服务器也不再接收数据。
当数据连接再次起作用时,到目前为止,服务器收到最后一个位置。所以这两个职位之间存在差距。
发送适当数据以填补这一空白的最佳方法是什么?
答案 0 :(得分:1)
有一个应用程序做同样的事情(除了我使用数据库而不是csv),我建议你发送数据包。每秒发送数据会耗尽电池电量。我根据需要每分钟或更长时间发送数据。
对于您的问题,在每次调用(HTTP POST)时,我创建一个JSONArray,其中包含要发送的每个位置。我在数据库中标记数据,其状态是知道哪一个被正确发送(0 =未发送,1 =已发送)。状态取决于请求的StatusCode。
数据库将通过收听GPS跟踪器的服务进行实时填充,状态为0。
在下一个电话中,我将选择每个未发送的数据。我更喜欢使用JSON格式,因为我的服务器知道如何阅读它,但这不是优先选择。
答案 1 :(得分:0)
我认为没有"将军"对于这种情况的解决方案,大多数时候你必须找到适合你的最佳解决方案,但我会做的是以下内容,具体取决于服务器端实现:
创建一个存储所有信息的对象,例如" Positions"可以序列化为json并存储在本地。
在发出请求之前,请更新存储数据的对象并保存。
Wen你发起请求使用你的自定义对象作为"数据"为您的服务器。
如果请求成功,请清除所有已存储的数据(已经发送)。
如果请求失败,则不执行任何操作......下次会发送数据。
如果您想更精确,可以检查请求错误的原因,如果它不是超时并且是服务器问题,您可以将数据集标记为失败并使用一个计数器,用于对失败的数据进行最大重试,如果达到最大重试次数,则删除失败的数据,这可能是您侧面的数据结构上的错误,可能会阻止向服务器发送良好的数据。