I am writing to logic that merges two Observables together so that I can make sure they both run together and complete a whole. To do this, I have used the Observable.mergeDelayError()
as seen below. However, when I am writing my unit tests, sometimes, I get a NullPointerException
when trying to call mRefreshSubscription.unsubscribe()
where mRefreshSubscription
is null.
Question:
Is it possible that the resulting merged Observable, because it can be double empty, proceed to call into onComplete()
faster than subscribe()
returns a subscription?
Observable observA = Observable.empty();
Observable observB = Observable.empty();
mRefreshSubscription = Observable.mergeDelayError(observA, observB)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe(getRefreshObserver());
private Observer getRefreshObserver() {
if (mRefreshObserver == null) {
mRefreshObserver = new Observer() {
@Override
public void onCompleted() {
mRefreshSubscription.unsubscribe();
}
@Override
public void onError(Throwable e) {
mRefreshSubscription.unsubscribe();
}
@Override
public void onNext(Object o) {
// do nothing
}
};
}
return mCleanAndAutoSubscriberObserver;
}