RxJava Filter is ignored



在我的类Activity中,我创建了一个Fragment。为了检测片段是否已准备就绪,我的片段中isInitialized了一个布尔标志。现在我想在我的活动中运行一些代码,为此我必须确保片段已准备就绪并且isInitialized为真。现在我写了一些 RxJava 代码来响应我Activity中变量的变化

Observable.just(fragment.isInitialized)
.filter { _ -> true }
.subscribe {  load() }

如果我运行我的应用程序,即使isInitialized为 false,也会调用方法加载。我的代码有什么问题?

如果isInitialized是一个基本字段,则无法对这样的更改做出反应。请改用BehaviorSubject<Boolean>

在您的片段中:

BehaviorSubject<Boolean> isInitialized = BehaviorSubject.create();

在初始化代码中的某个地方:

isInitialized.onNext(true);

在加载代码中:

fragment.isInitialized
.filter { _ -> true }
.observeOn(Schedulers.io())
.doOnNext { load() }
.observeOn(AndroidSchedulers.mainThread())
.subscribe { /* loaded */ }

假设isInitialized是一个布尔值,你需要过滤该值。目前,对于每种情况,您都返回 true。

filter { it }

相关内容

  • 没有找到相关文章

最新更新