Volley 请求重试策略不考虑超时

Volley request retry policy doesn't consider timeout

我在 DefaultRetryPolicy 中将 1500 设置为 initialTimeoutMs,如下所示,但它不考虑超时:

request.setRetryPolicy(new DefaultRetryPolicy(1500
        , DefaultRetryPolicy.DEFAULT_MAX_RETRIES
        , DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

我断开了我设备上的 WiFi 以测试它是否超时,我在 Logcat:

中看到了这些时间
2019-12-16 14:28:15.892 I/MyClass: request sent
2019-12-16 14:28:35.930 I/MyClass: request caught onError

我预计会在 1.5 秒后捕获 onResponse 或 onError,但花了 20 多秒!!!

根据您的配置。您的超时时间应为 3 秒。 参考http://prasadthangavel.blogspot.com/2013/12/why-volley-android-has-provided-two.html

我认为你应该将 DEFAULT_BACKOFF_MULT 设为零。

使用 5 秒,因为 15 秒更适合超时..

int TIME_OUT = 500; //use 5 sec it will work fine with it..

request.setRetryPolicy(new DefaultRetryPolicy(
    TIME_OUT, 
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));