总结 : volley超时和重复请求问题

在之前项目的开发中遇到这么一个问题:

  • 1.Google推出的Volley网络请求框架,在登录注册模块上出现重复请求的现象,经测试,并未发现代码有任何问题。

  • 2.这就纳闷了,有时会重复请求,有时则不会,谷歌后得知,这是由于网络超时而导致volley重复请求服务端而
    出现的Bug,找到了问题所在,当然就得对症下药咯。

    • 1.其实谷歌提供了相应的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;
        
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值