我也遇到了这个问题,加入observeOn(androidMainThread, true)有所缓解,然后并不能完全解决问题,于是改为如下方法可以解决:
bservable<Void> o = Observable.create(new Observable.OnSubscribe<Void>() {
@Override
public void call(Subscriber<? super Void> subscriber) {
// Do the work and call onCompleted when you done,
// no need to call onNext if you have nothing to emit
subscriber.onCompleted();
}
});
o.subscribe(new OnCompletedObserver<Void>() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError " + e.getMessage());
}
});
RxJava - 小心 observeOn 的陷阱在 Android 中使用 RxJava 经常会用到 observeOn 这个操作符来完成线程的切换,比如网络请求之后切换到“主线程”,通常会这么写: 然而我遇到一个奇怪的问...