首页 > 解决方案 > 如何使用 RxJava 观察布尔字段

问题描述

在我的课堂Foo上,我有一个布尔字段。当字段发生变化时,我将在我的类中对这种变化做出反应Bar 如何在 Android 中使用 RxJava 实现这一点?

标签: androidobservablerx-java

解决方案


我想你必须创建一个Foo里面有主题的类

class Foo {
    var booleanField: Boolean = false
    set(value) {
        field = value
        observable.onNext(value)
    }
    val observable = BehaviorSubject.createDefault(booleanField)
}

然后你必须在Boo课堂上观察那个主题

class Boo(val observable: BehaviorSubject<Boolean>) {
    var booleanField: Boolean = false
    var disposable: Disposable? = null

    fun startObserve() {
        disposable?.dispose()
        disposable = observable.subscribe {
            booleanField = it
        }
    }

    fun finishObserve() {
        disposable?.dispose()
        disposable = null
    }
}

如果您必须运行它,只需创建 Foo 并将其传递给 Boo:

val foo = Foo()
val boo = Boo(foo.observable)
boo.startObserve()

foo.booleanField = true //boo is changed to true too

现在如果你改变foo.booleanFieldboo.booleanField也会改变。如果需要,可以在构造函数中运行 startObserve 以在创建实例后立即启动它。可能您必须在BehaviorSubject其他地方创建并使用 DI 传递给两个类。并且不要忘记在工作完成后取消订阅。


推荐阅读