Sometimes I want to trigger a Runnable as part of my Observable sequence, but the Runnable does not report progress.
I have written a simple factory for wrapping a Runnable object into an Observable:
public static <T> Observable<T> fromRunnable(final Runnable action) {
if (action == null) {
throw new NullPointerException("action");
}
return Observable.fromPublisher(subscriber -> {
try {
action.run();
subscriber.onComplete();
} catch (final Throwable throwable) {
subscriber.onError(throwable);
}
});
}
Usage:
Observable.concat(
someTask,
MoreObservables.fromRunnable(() -> {
System.out.println("Done. ");
}));
But does RxJava 2 provide this functionality already?