使用Volley for Android开发时写的setRetryPolicy()在哪里

use*_*780 2 android android-volley

它可能是一个简单的问题,但我在实际代码中测试它,无法判断Volley的setRetryPolicy()函数的正确行为.任何人请告诉我这份声明的正确立场.是在onErrorResponse()函数中写入重试策略还是在将请求输入队列之前?这是我的位图图像代码.我想在请求超时后重试20秒3次.请建议我写正确的重试政策的地方,并根据我的需要设置重试政策是否正确?

ImageRequest ir = new ImageRequest(url, new Response.Listener<Bitmap>() {

            @Override
            public void onResponse(Bitmap response) {
                      iv.setImageBitmap(response);

            }
        }, 0, 0, null, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                ir.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 2, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

            }
        });

mRequestQueue.add(ir);
Run Code Online (Sandbox Code Playgroud)

Hun*_*der 6

声明并初始化Request对象后,添加重试策略.在将请求添加到Volley队列之前,可以在任何地方添加策略.

ImageRequest  ir = new ImageRequest(url, new Response.Listener() {

        @Override
        public void onResponse(Bitmap response) {
            iv.setImageBitmap(response);
        }
    }, 0, 0, null, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            //Handle errors related to Volley such as networking issues, etc
        }
});

ir.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 2, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
mRequestQueue.add(ir);
Run Code Online (Sandbox Code Playgroud)

另一个注意事项:onErrorResponse()回调函数用于处理Volley生成的错误.此时,您的请求已被分派并出现一些网络错误.否则,您的代码将无法访问此回调函数.因此,在此函数中添加重试策略是没有意义的.