我将 JsonRequest 发布到服务器。服务器很慢,Volley 倾向于多次调用慢速服务器,因为它没有从第一个请求中得到响应(因为我的服务器很慢)。有没有办法阻止 Volley 重试请求,以便它可以收到第一个响应?
我试过了:
myRequest.setRetryPolicy(new DefaultRetryPolicy(
TIMEOUT_MS,
RETRIES,
BACKOFF_MULT));
我已将 TIMEOUT_MS 替换为 0,将 RETRIES 替换为 0,并将 BACKOFF_MULT 替换为 0,但它不起作用。
有什么建议吗?
最佳答案
Volley 默认重试策略是:
/** The default socket timeout in milliseconds */
public static final int DEFAULT_TIMEOUT_MS = 2500;
/** The default number of retries */
public static final int DEFAULT_MAX_RETRIES = 1;
/** The default backoff multiplier */
public static final float DEFAULT_BACKOFF_MULT = 1f;
你可以在 DefaultRetryPolicy.java 中找到它,
所以你可以看到 volley 默认发出 1 次重试请求。
尝试使用较小的 TIMEOUT(如果您不想等待 2500 毫秒),或大于 2500 毫秒来获得答案),但保留其他值,例如:
// Wait 20 seconds and don't retry more than once
myRequest.setRetryPolicy(new DefaultRetryPolicy(
(int) TimeUnit.SECONDS.toMillis(20),
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
因此,要禁用 Volley 重试,您需要执行以下操作:
myRequest.setRetryPolicy(new DefaultRetryPolicy(
(int) TimeUnit.SECONDS.toMillis(20), //After the set time elapses the request will timeout
0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
关于android - 如何防止 Volley 请求重试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146945/