
我的例子:
getServerAPI().getDialogs(offset,getcookies()) .subscribeOn(Schedulers.newThread()) .observeOn(AndroIDSchedulers.mainThread()) .retrywhen(observable -> {...}) // Need some logic .subscribe(dialogsEnvelope -> getVIEw().setDialogs(dialogsEnvelope),throwable -> getVIEw().setError(processFail(throwable)));解决方法 使用Okhttp非常强大的 Interceptor. public class RecoverInterceptor implements Interceptor { String getAuth() { // check if we have auth,if not,authorize return "Bearer ..."; } voID clearauth() { // clear everything } @OverrIDe public Response intercept(Chain chain) throws IOException { final Request request = chain.request(); if (request.urlString().startsWith("MY ENDPOINT")) { final Request signed = request.newBuilder() .header("Authorization",getAuth()) .build(); final Response response = chain.proceed(signed); if (response.code() == 401) { clearauth(); return intercept(chain); } else { return response; } } else { return chain.proceed(request); } }} 请记住同步您的身份验证进程代码,以便两个并发请求不会同时调用它.
总结以上是内存溢出为你收集整理的android – 实现重试时的逻辑全部内容,希望文章能够帮你解决android – 实现重试时的逻辑所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)