Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 服务器和移动设备之间的同步超时问题_Android_Ruby On Rails 4_Retrofit2_Ormlite - Fatal编程技术网

Android 服务器和移动设备之间的同步超时问题

Android 服务器和移动设备之间的同步超时问题,android,ruby-on-rails-4,retrofit2,ormlite,Android,Ruby On Rails 4,Retrofit2,Ormlite,我在服务器和android应用程序之间的数据同步过程中遇到了一个问题,我已经搜索过了,但没有找到好的解决方案。也许有人有办法帮我 为了解释我的应用程序是如何工作的,我有一个android应用程序,可以脱机工作,然后可以与rails服务器同步。要脱机工作,我在登录时同步服务器上的所有表/记录,并将所有内容保存到应用程序数据库中。在应用程序中,我保存了id_server和id_mobile,当应用程序脱机工作时,只生成id_mobile,然后发出POST请求在服务器上创建记录,作为回报,我在我的应用

我在服务器和android应用程序之间的数据同步过程中遇到了一个问题,我已经搜索过了,但没有找到好的解决方案。也许有人有办法帮我

为了解释我的应用程序是如何工作的,我有一个android应用程序,可以脱机工作,然后可以与rails服务器同步。要脱机工作,我在登录时同步服务器上的所有表/记录,并将所有内容保存到应用程序数据库中。在应用程序中,我保存了id_server和id_mobile,当应用程序脱机工作时,只生成id_mobile,然后发出POST请求在服务器上创建记录,作为回报,我在我的应用程序数据库中获得了一些数据,如id_server、created_at、updated_at和deleted_at以及update de record

我的问题是,当我发出POST请求在服务器上创建数据时,服务器接收到请求并进行处理,当服务器将请求返回到应用程序时,由于互联网不好而发生超时,当时我没有更新id_服务器的服务器记录,创建于,更新和删除了应用程序数据库中记录的位置

在下一次同步时,此记录将在没有id_服务器的情况下继续,并将再次发送帖子,因此该记录正在复制


有没有办法防止这个问题?

增加连接超时时间。 如果你使用截击,那么你必须这样做-

 stringRequest.setRetryPolicy(new DefaultRetryPolicy(15000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
这里15000是超时毫秒。将其设置为50000毫秒,例如50秒 你的问题就会解决

而且,如果您在raw中使用httpurl连接,那么只需将这一行-

  httpURLConnection.setConnectTimeout(50000);

但是使用太多的时间是不好的,不是吗?不,不是不好。这是我们的需要。有时我们不得不使用响应慢的服务器,或者internet很慢。在这种情况下,我们必须增加连接超时。如果此答案解决了您的问题,请将其标记为已接受