我正在使用RxJava2和Retrofit2来处理网络请求。
我的循环中应该始终运行<optional>
,但我的doOnNext
是观察者在销毁时调用Activity
并导致改进取消请求。
dispose()
有没有办法让请求完成但只处理UI级别的观察者?
java.io.IOException: Canceled
感谢。
答案 0 :(得分:1)
我找到了一种通过将观察者包装成另一种来实现所需行为的方法,但我确信有一些优雅的方法可以做到这一点。
...
.subscribe(new NonDisposableObserver<>(observer)
以下NonDisposableObserver
班级:
public class NonDisposableObserver<T> implements Observer<T> {
private DisposableObserver<T> observer;
public NonDisposableObserver(DisposableObserver<T> observer) {
this.observer = observer;
}
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(T t) {
if (!observer.isDisposed()) {
observer.onNext(t);
}
}
@Override
public void onError(Throwable e) {
if (!observer.isDisposed()) {
observer.onError(e);
}
}
@Override
public void onComplete() {
if (!observer.isDisposed()) {
observer.onComplete();
}
}
}