为什么在重放()之前调用publish()很重要

Ele*_*rks 4 reactive-programming rx-java rx-android rx-java2

我读过很多关于publish()和replay()的rx例子.在所有教程中,他们都说在调用replay()之前调用publish()很重要.为什么会这样?如果你调用replay()并且从不调用publish()会发生什么?似乎replay()运算符会订阅源observable并开始缓存.然后任何人都会获得相同的完整数据流.我可以看到publish()改变游戏的唯一原因是它会延迟订阅源observable,直到调用connect().这是正确的吗?

aka*_*okd 8

你通常在同一时间申请一个或另一个,但不能同时因为publish().replay()有一个简单的没有实际的区别replay()replay().publish()仅仅是一个食谱晚消费者看不到整个序列.

在所有教程中,他们都说在调用replay()之前调用publish()很重要.

这绝对是错的,你在哪里读到它?

这是正确的吗?

两个运算符都返回a ConnectableObservable,您必须connect在两种情况下调用以启动序列.在这两种情况下,您应该在调用connect之前准备消费者,或者autoConnect(n)n消费者之后使用它来启动序

之间的区别publish,并replay认为后者缓存部分或所有项目,并将其重播到消费者无论何时他们订阅.前者不保留任何项目,甚至不包括最新项目,BehaviorSubject并将项目发送给在该确切时间订阅它的消费者.