这可能是一个简单的问题,但我在实际代码中测试它并且无法判断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);
答案 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生成的错误。此时,您的请求已被分派并出现一些网络错误。否则,您的代码将无法访问此回调函数。因此,在此函数中添加重试策略毫无意义。