Volley在网络请求不好的情况下,APP端的响应速度延迟了1-3秒,导致重复请求,有时一次,有时几次。
查询后得知,这是由于网络超时而导致volley重复请求服务端而 出现的Bug,以下是解决方式
谷歌提供了相应的api去设置超时时长,我们可以将超时时长设置稍微长点
request.setRetryPolicy(new DefaultRetryPolicy(int initialTimeoutMs,
int maxNumRetries, float backoffMultiplier));
request.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0, 1.0f));
1.DefaultRetryPolicy实现于RetryPolicy,RetryPolicy是一个接口;
2.DefaultRetryPolicy构造函数中的参数1是设置超时时长,默认为2500,可以设置稍微长点;
3.DefaultRetryPolicy构造函数中的参数2是设置最大重复请求次数,默认为1,可以设置为0;
4.DefaultRetryPolicy构造函数中的参数3为设置 “允许你指定一个退避乘数可以用来 实现<指数退
避>来从RESTful服务器请求数据”,默认值为1,当取1时,即可以简单理解为 ” 每次超时请求时长都是 <前一次超时请求时长 *2> “,以此类推
如:
initialTimeoutMs为 5,maxNumRetries为 2,backoffMultiplier为 2
则:
第一次超时时长: 5 + (5 * 2) = 15;
第二次超时时长: 15 +(15 * 2)= 45;
查询后得知,这是由于网络超时而导致volley重复请求服务端而 出现的Bug,以下是解决方式
谷歌提供了相应的api去设置超时时长,我们可以将超时时长设置稍微长点
request.setRetryPolicy(new DefaultRetryPolicy(int initialTimeoutMs,
int maxNumRetries, float backoffMultiplier));
request.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0, 1.0f));
1.DefaultRetryPolicy实现于RetryPolicy,RetryPolicy是一个接口;
2.DefaultRetryPolicy构造函数中的参数1是设置超时时长,默认为2500,可以设置稍微长点;
3.DefaultRetryPolicy构造函数中的参数2是设置最大重复请求次数,默认为1,可以设置为0;
4.DefaultRetryPolicy构造函数中的参数3为设置 “允许你指定一个退避乘数可以用来 实现<指数退
避>来从RESTful服务器请求数据”,默认值为1,当取1时,即可以简单理解为 ” 每次超时请求时长都是 <前一次超时请求时长 *2> “,以此类推
如:
initialTimeoutMs为 5,maxNumRetries为 2,backoffMultiplier为 2
则:
第一次超时时长: 5 + (5 * 2) = 15;
第二次超时时长: 15 +(15 * 2)= 45;