使用Volley进行Android开发时,setRetryPolicy()方法调用应该写在哪里

2024-01-10

这可能是一个简单的问题,但我在实际代码中测试了它,无法判断正确的行为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);

声明并初始化 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 生成的错误。此时,您的请求已被发送并出现一些网络错误。否则,您的代码将无法到达此回调函数。因此,在此函数中添加重试策略是没有意义的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Volley进行Android开发时,setRetryPolicy()方法调用应该写在哪里 的相关文章