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

时间:2014-05-06 06:38:27

标签: 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);

1 个答案:

答案 0 :(得分:6)

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

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);

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