volley超时和重复请求问题

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值