在我的课程Foo
中,我有一个布尔字段。当字段更改时,我将在我的课程Bar
中对此更改做出反应
如何在Android中使用RxJava实现此功能?
答案 0 :(得分:1)
我想您必须创建类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.booleanField
,boo.booleanField
也将更改。
如果需要,可以在构造器中运行startObserve以在实例创建后立即启动它。
可能是您必须在其他地方创建BehaviorSubject
并仅使用DI传递给两个类。
而且,别忘了在工作完成后退订。