RxJava如何缓存可观察的静态

时间:2018-08-21 21:39:59

标签: android kotlin rx-java

我想缓存以下可观察的

val currentUser: Observable<User>
    get() = Observable.create { emitter ->
            ...
    }

由于create返回的可观察值是静态的,因此我不能仅对其调用cache。我这样做的原因是,可观察对象是在应用程序的不同部分中访问的,我希望它立即返回最新值,而不是每次都进行网络调用。

2 个答案:

答案 0 :(得分:2)

您尝试过吗:

val currentUser: Observable<User> = Observable.create { emitter ->
    ...
}.replay(1)
 .autoConnect(0)

答案 1 :(得分:1)

感谢EpicPandaForce,这是我最终使用的。我必须指定发射器类型,否则会出错

val currentUser: Observable<User> = Observable.create { emitter: ObservableEmitter<User> ->
    ...
}.replay(1)
 .autoConnect(0)