这可能是一个简单的问题,但我在实际代码中对其进行了测试,无法判断 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);
最佳答案
一旦您声明并初始化了 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 产生的错误。此时,您的请求已经发送并出现了一些网络错误。否则,您的代码将无法到达此回调函数。因此,在此函数中添加重试策略是没有意义的。
关于android - Android开发使用Volley时setRetryPolicy()方法调用应该写在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23487556/