要处理Android Volley Timeout,您需要使用 RetryPolicy
重试政策
- Volley提供了一种简单的方法来实现您的请求的RetryPolicy。
- Volley将所有请求的默认Socket&ConnectionTImeout设置为5秒。
RetryPolicy
是一个接口,您需要在其中实现超时时如何重试特定请求的逻辑。
它处理了这三个参数
- 超时-指定每次重试尝试的套接字超时(以毫秒为单位)。
- 重试次数-尝试重试的次数。
- Back Off Multiplier-一个乘数,用于确定每次重试尝试设置给套接字的指数时间。
对于前。如果使用这些值创建了RetryPolicy
超时-3000毫秒,重试次数-2,退避乘数-2.0
重试尝试1:
- 时间=时间+(时间*后退乘数);
- 时间= 3000 + 6000 = 9000ms
- 套接字超时=时间;
- Socket超时为9秒时分派的请求
重试尝试2:
- 时间=时间+(时间*后退乘数);
- 时间= 9000 + 18000 = 27000ms
- 套接字超时=时间;
- 套接字超时为27秒时调度的请求
因此,在“ 重试尝试2 ”结束时,如果仍然发生套接字超时,Volley会TimeoutError
在您的UI错误响应处理程序中抛出a 。
//Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions.
//Volley does retry for you if you have specified the policy.
jsonObjRequest.setRetryPolicy(new DefaultRetryPolicy(5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));