在 5 秒定时器 RXJava 上设置一个可观察对象

Setting an observable on a 5 second timer RXJava

我正在使用 RXJava 2 执行操作。我希望该操作每 5 秒发生一次。然而,在引入 interval 方法后,它改变了我的功能并破坏了我的 .subscribe(DisponsableObserver<Boolean>)

mObserver = getObserver();              //return DisponsableObserver<Boolean>
observable = getSolultionObservable();  //return Observer<Boolean>

observable.subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .interval(5, TimeUnit.SECONDS) 
            .subscribe(mSolutionObserver); //Now Produces Cannot Resolve Method error

我怎样才能成功 运行 我在计时器上的可观察对象和 return 布尔值?

您可以使用 flatMap 运算符将 interval 每 5 秒发出的项目 (long) 转换为您的 Observable

Observable.interval(5, TimeUnit.SECONDS) 
    .flatMap(long -> observable)
    .subscribeOn(Schedulers.newThread())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(mSolutionObserver);

编辑: 没有 lambda 表达式:

Observable.interval(5, TimeUnit.SECONDS) 
    .flatMap(new Function<Long, ObservableSource<Boolean>>() {
                @Override
                public ObservableSource<Boolean> apply(Long aLong) throws Exception {
                    return observable;
                }
            })
    .subscribeOn(Schedulers.newThread())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(mSolutionObserver);