RxJavas是单一的。它的连接方法在哪里?

RxJavas是单一的。它的连接方法在哪里?,java,rx-java,reactive-programming,Java,Rx Java,Reactive Programming,假设我想打一个网络电话并使用rx.Single,因为我只期望一个值 如何应用类似于replay().autoConnect()的功能,以便在我从多个源订阅时不会多次发生网络调用? 我应该使用toObservable().replay().autoConnect() 我假设整个publish()ConnectableObservable链被遗漏是有原因的 edit:我的问题不是如何将其转换为常规可观测值。我的问题是如何继续使用rx.Single,一直向下。为了使用可观察的方法,您必须使用到可观察的

假设我想打一个网络电话并使用rx.Single,因为我只期望一个值

如何应用类似于
replay().autoConnect()
的功能,以便在我从多个源订阅时不会多次发生网络调用? 我应该使用
toObservable().replay().autoConnect()

我假设整个
publish()
ConnectableObservable
链被遗漏是有原因的


edit:我的问题不是如何将其转换为常规可观测值。我的问题是如何继续使用rx.Single,一直向下。

为了使用
可观察的
方法,您必须使用
到可观察的
方法将
Single
转换为
可观察的

Observable<Object> obs = yourSingle.toObservable();
obs.replay().autoConnect().subscribre();
Observable obs=yourSingle.toObservable();
obs.replay().autoConnect().subscribre();

如果您将其转换为可观察的
,请使用
.cache()
将连接数限制为一个。

(很抱歉,我发表了评论,然后重新阅读了您的问题,意识到我的评论与您的问题无关,并且可能在发布您的评论的同时删除了我的评论。)我写下了您在我的问题中提出的建议。但这并不是一个真正的解决方案,因为它违背了rx的目的。Single更像是一个解决方案。为什么它是一个解决方案?单一只给你一个可观测算子的子集。如果你想使用可观察的方法,你必须将你的单曲转换成可观察的。缓存不同于回放。对于缓存,不能保证第二个订阅者接收相同的结果。只是参考是一样的。以此为例。它打印不同的值@PaulWoitaschek该链接是关于
share()
操作符的,这很有意义
cache()
但是会重新发送旧项目-请参阅完全误读,谢谢。你认为cache()和replay()之间有区别吗。autoConnect()?我认为它比我能告诉你的更好。所以你认为没有区别吗?