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;
}