Ответ 1
Вам не нужно вызывать onNext
, если ваш Observable
ничего не испускает.
Вы можете использовать Void
в своей подписи и сделать что-то вроде
Observable<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());
}
});
Вы можете определить OnCompletedObserver, чтобы упростить обратный вызов Observer, чтобы вам не пришлось переопределять onNext, поскольку он вам не нужен.
public abstract class OnCompletedObserver<T> implements Observer<T> {
@Override
public void onNext(T o) {
}
}
Если я понял, что вы просите, тогда это должно сделать трюк.