有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java共享操作符在RxJava中做什么?我应该什么时候用?

我知道share()是publish()的替代品。refCount()。 然后从RxJava wiki:

Observable.publish( ) — represents an Observable as a Connectable Observable ConnectableObservable.refCount( ) — makes a Connectable Observable behave like an ordinary Observable

这让我很困惑。如果在发布()之后。refCount(),它的行为就像一个普通的可观察对象,我为什么要使用它,这个api有什么意义


共 (1) 个答案

  1. # 1 楼答案

    你说得对Observable.share只是publish().refCount()的捷径。我认为你上面引用的描述并不完全清楚,因为ConnectedObservable.refCount还有一点:)

    如果将Observable转换为ConnectableObservable,则除非显式调用ConnectableObservable.connect,否则它不会发出项(即使订阅了某些内容),它基本上会推迟subscribe方法的执行,并防止对每个订阅方多次执行该方法。这种技术通常用于确保在observable开始发射项目之前(换句话说,在每个人都订阅了之后)订阅所有订阅方(调用connect()方法)

    如果你有一个以上的订户(经常发生的情况),你必须处理他们的订阅和取消订阅,这就是事情变得棘手的地方。这就是refCount()被引入的原因。该操作符返回新的Observable,跟踪订阅它的订户数量,并保持连接,只要至少有一个订阅。当第一个订户出现时,它也会自动连接

    另外,我正在学习如何使用RxJava,如果我错了,请指出