我有以下方法:

public class ParentalControlInteractor {
   public Single<Boolean> isPinSet() {
       return bamSdk.getPinManager().isPINSet();
   }
}

我想调用此函数运行一次,然后每分钟重复一次直到无穷大,但这似乎很笨拙:
    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());
                });

没有更好的方法吗?我正在使用RxJava2。另外,上面的方法仅调用它10000次。我想一直使用它,就像使用Handler.postDelayed()一样。

最佳答案

你可以使用interval() oberator这是代码

DisposableObserver<Boolean> disposable =
Observable.interval(1, TimeUnit.MINUTES)
            .flatMap(aLong -> isPinSet().toObservable())
            .subscribeOn(Schedulers.io())
            .subscribeWith({isPinSet -> doSomething()}, {throwable -> handleError()}, {});

如果您想随时完成此操作,请致电disposable.dispose()

10-07 22:25