gpt4 book ai didi

android - 出现 401 时暂停当前堆栈,登录并恢复 Volley

转载 作者:太空狗 更新时间:2023-10-29 13:23:17 24 4
gpt4 key购买 nike

我目前正在尝试构建一个处理 401 状态代码后恢复的 Volley 应用。

假设我的应用程序正在同步并且收到 401 错误,我需要获取一个新 token ,我想暂停当前的 Volley RequestQueue,添加失败的请求回到RequestQueue,弹出登录显示框,发送登录请求。一旦服务器向我发送了所需的详细信息,我将恢复主 RequestQueue

我正在研究的当前解决方案是我的 onErrorResponse 将暂停堆栈,然后显示一个登录框。在另一个 RequestQueue 上发送登录请求,等待回复,然后恢复主 RequestQueue。但我不确定如何重新启动因 401 错误而失败的任何失败请求。

这是正确的方向吗?如果是的话,我如何从 onErrorResponse 方法将我的请求添加回队列?

最佳答案

您可以将登录请求设置为比同步更高的优先级,并为同步请求设置更宽松的重试策略。例如:

private class LoginRequest extends com.android.volley.toolbox.JsonObjectRequest {

...

@Override
public Priority getPriority() {
return Priority.HIGH;
}
}

并且,对于您的同步请求:

public class SyncRequest extends com.android.volley.toolbox.JsonObjectRequest {

...

@Override
public Request<?> setRetryPolicy(RetryPolicy retryPolicy) {
return super.setRetryPolicy(new SyncRetryPolicy());
}
}


public class SyncRetryPolicy extends com.android.volley.DefaultRetryPolicy {

private static final int INITIAL_TIMEOUT_MS = 5500;
private static final int MAX_NUM_RETRIES = 10;
private static final float BACKOFF_MULTIPLIER = 2f;

public SyncRetryPolicy() {
super(INITIAL_TIMEOUT_MS, MAX_NUM_RETRIES, BACKOFF_MULTIPLIER);
}
}

当然,只有当用户足够快地登录时它才有意义。如果用户只是将设备留在登录屏幕上,您将需要一个更强大的系统。

同步有多重要?您可以将其保存在磁盘中以供以后同步吗?如果用户在登录屏幕中同时处理另一个应用程序,并且操作系统决定从内存中释放您的应用程序?

关于android - 出现 401 时暂停当前堆栈,登录并恢复 Volley,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25415792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com