A little bit of context:
In this link: https://github.com/ReactiveX/RxJava/issues/448 @ben-lesh proposed a Manual Recursion implementation to polling using Observables.
However in latest RxJava version there is no OnSubscribeFunc
.
Here it is my current implementation:
Observable.create(new Observable.OnSubscribe<Item>() {
@Override
public void call(final Subscriber<? super Item> innerSubscriber) {
Schedulers.io().createWorker()
.schedulePeriodically(new Action0() {
@Override
public void call() {
searchObservable()
.doOnNext(new Action1<Item>() {
@Override
public void call(Item item) {
innerSubscriber.onNext(item);
}
})
.doOnError(new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
if (throwable != null) {
innerSubscriber.onError(throwable);
}
}
})
.doOnCompleted(new Action0() {
@Override
public void call() {
innerSubscriber.onCompleted();
}
}).subscribe(); // Set subscriber?
}
}, initialDelay, pollingInterval, TimeUnit.MINUTES);
}
})
.subscribeOn(Schedulers.io()) // performs networking on background thread
.observeOn(observeOnScheduler) // sends notifications to another Scheduler, usually the UI thread
.subscribe(subscriber); // The subscriber
searchObservable
performs a service request. This is working fine the first run, this is, the data is passed to the subscriber
. However, after waiting the pollingInterval
, the data returns and the doOnNext
is executed but the data is not passed to the UI. Do I need to set any subscriber in the Action
that schedulePeriodically
takes?