Android Volley如何处理暂时丢失的networking连接?

如果Android Volley发布请求由于networking丢失而失败,那么Android Volley会在networking连接自动恢复后重试该post。 它会触发所有的请求尝试,等待连接重新build立或只是触发一个错误,并停止?

如果Android Volley在重新build立连接后不重试,似乎我将不得不创build逻辑,以便每当连接丢失时都有一个额外的队列,并且每当连接状态改变时都会重试。

Solutions Collecting From Web of "Android Volley如何处理暂时丢失的networking连接?"

如果Android Volley发布请求由于networking丢失而失败,那么Android Volley会在networking连接自动恢复后重试该post。

不,不会的 根据您的应用程序,我可能甚至不期望。

它会触发所有的请求尝试,等待连接重新build立或只是触发一个错误,并停止?

它只是抛出一个错误。 是的,你应该自己写这种逻辑。

根据这个链接:

在Volley中没有直接的方法指定请求超时值,但是有一个解决方法,你需要在请求对象上设置一个RetryPolicy。 DefaultRetryPolicy类接受一个名为initialTimeout的参数,这可以用来指定一个请求超时,确保最大重试计数是1,这样volley在超时后不重试请求。

Setting Request Timeout: request.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1, 1.0f)); 

如果您想重试失败的请求(由于超时),您可以指定使用上面的代码,只需增加重试计数。 请注意最后一个参数,它允许您指定一个可用于实现某些RESTful服务推荐的“指数退避”的退避乘数。

该链接有很多有用的技巧和窍门使用Volley。 希望这可以帮助!

如果出现IOException(例如java.net.ConnectException),Volley不使用重试策略。 Volley仅在SocketTimeoutException,ConnectTimeoutException或HTTP响应代码为401(禁止)或302(永久移动)的情况下使用重试策略。

如果你使用(AsyncHttpClient),你可以尝试调用这个方法:

 setMaxRetriesAndTimeout(int retries, int timeout) Sets the maximum number of retries and timeout for a particular Request. * * @param retries maximum number of retries per request * @param timeout sleep between retries in milliseconds */