【问题标题】:Where should I write setRetryPolicy() method call when using Volley for Android development使用 Volley 进行 Android 开发时我应该在哪里编写 setRetryPolicy() 方法调用
【发布时间】:2014-05-06 06:38:26
【问题描述】:

这可能是一个简单的问题,但我在实际代码中对其进行了测试,无法判断 Volley 的setRetryPolicy() 函数的正确行为。任何人请告诉我要写的这个声明的正确位置。我应该在onErrorResponse() 函数中还是在将请求输入队列之前编写此方法调用?

这是我的位图图像代码。我希望在请求超时后重试 3 次,每次 20 秒。请建议我编写重试策略的正确位置,我是否根据需要正确设置了重试策略?

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

【问题讨论】:

  • 为什么不检查对象 ir 的类?

标签: android android-volley


【解决方案1】:

在声明并初始化 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);

另一个注意事项:onErrorResponse() 回调函数用于处理 Volley 产生的错误。此时,您的请求已经发送并出现了一些网络错误。否则,您的代码将无法访问此回调函数。所以,在这个函数里面添加重试策略是没有意义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多