Java 如何从BehaviorSubject获取最新值?

Java 如何从BehaviorSubject获取最新值?,java,android,reactive-programming,rx-java,rx-android,Java,Android,Reactive Programming,Rx Java,Rx Android,如何从上的BehaviorSubject检索最新值 一些背景信息:我正在使用RxJava实现MVVM模式。我的ViewModel封装了“可绑定属性”,这些属性是BehaviorSubjects。我将它们作为可观察对象绑定到UI元素,确保界面不断更新(由于使用了BehaviorSubject,即使在设置值后进行订阅,也会发生这种情况) 我仍然希望能够访问最新的(实际的)“原始”财产价值,用于业务逻辑 我该怎么做 当然,BehaviorSubject会以某种方式缓存它,因为它会为订阅它的人重新发布最

如何从上的
BehaviorSubject
检索最新值

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

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

我该怎么做

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

然而
BehaviorSubject.last()
只返回一个
可观察的
,并且它似乎没有公开任何
t
返回类型的方法

我知道我可以自己把它藏起来,但感觉有点多余

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


有什么更整洁的吗?

事实证明,其背后的原因是RxAndroid默认依赖于RxJava 1.0.4,在RxJava 1.0.4中,受试者还没有公开
getValue
hasValue

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

事实证明,解决这个问题所需要的只是在
build.gradle
中手动添加对最新版本RxJava的依赖,并与RxAndroid依赖并排添加。到目前为止,这将是:

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

请参见如果使用
blockingGet()


看看这个主题本身的hasValue和getValue方法,这是我要找的第一件事;)不幸的是,它没有公开这样的方法,因此question.RxJava从1.0.6开始就有了这些方法:@akarnokd RxAndroid似乎基于RxJava 1.0.4。
subject.onNext(subject.blockingLast(null))