I have the following method:
public class ParentalControlInteractor {
public Single<Boolean> isPinSet() {
return bamSdk.getPinManager().isPINSet();
}
}
I want to call this function to run once, then repeat every minute until infinity but this seems clumsy:
parentalControlInteractor.isPinSet()
.subscribeOn(Schedulers.io())
.repeat(10000)
.timeout(1600,TimeUnit.MILLISECONDS)
.doOnError(throwable -> {
Timber.e(throwable,"Error getting if Pin is set");
throwable.printStackTrace();
})
.subscribe(isPinSet -> {
this.isPinSet = isPinSet;
Timber.d("Pin is set = " + isPinSet.toString());
});
Isn't there a better way to do it? I'm using RxJava2. Also, the method above only calls it 10000 times. I want to call it forever, like using Handler.postDelayed().
Try
.repeatWhen(objectFlowable -> Flowable.timer(10, TimeUnit.SECONDS).repeat())
It turns out this is doing the job:
Try this:
you can use
interval()
oberator here is the codeif you want to finish this operation at any time call
disposable.dispose()
Best way to repeat request every time with specific delay of first emission
You can combine some RxJava operators:
I found this solution very elegant and very simple