gpt4 book ai didi

java - 如何从 BehaviorSubject 获取最新值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:01 25 4
gpt4 key购买 nike

如何从 BehaviorSubject 中检索最新值在 RxAndroid

一些背景信息:我正在使用 RxJava 来实现 MVVM 模式。我的 ViewModel 封装了 BehaviorSubject 的“可绑定(bind)属性”秒。我将它们作为可观察对象绑定(bind)到 UI 元素,确保界面不断更新(并且由于使用了 BehaviorSubject ,即使在设置值之后进行订阅,它也会发生)。

我仍然希望能够访问属性的最新(实际)“原始”值,用于业务逻辑。

我该怎么做?

当然BehaviorSubject以某种方式缓存它,因为它会为订阅它的人重新发布最新值。

还有BehaviorSubject.last()只返回 Observable<T> ,它似乎没有公开 T 的任何方法返回类型。

我知道我可以自己缓存它,但感觉多余。

我想我也可以在我的 getter 中创建一个一次性订阅,只是为了用它获取最新的值,然后将它返回给调用代码,但这看起来很笨拙。

手头有没有更整洁的东西?

最佳答案

事实证明,其背后的原因是 RxAndroid 默认依赖于 RxJava 1.0.4,其中 Subjects 还没有公开 getValuehasValue

感谢@akarnokd 帮助我意识到这一点。

事实证明,解决该问题所需要做的就是在 build.gradle 中手动添加对最新版本 RxJava 的依赖项和 RxAndroid 依赖项。截至目前,这将是:

compile 'io.reactivex:rxandroid:0.24.0'
compile 'io.reactivex:rxjava:1.0.11'

参见 https://github.com/ReactiveX/RxAndroid/issues/171

关于java - 如何从 BehaviorSubject 获取最新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30686386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com