总结 : 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;
        

你可能感兴趣的:(Android-未分类)