【发布时间】:2023-04-03 16:37:01
【问题描述】:
我正在努力理解关于以下方面的黄金法则(如果有的话):
什么时候使用 BehaviorSubject ?
和
何时使用 PublishSubject ?
它们的区别很明显
有很多种科目。对于这个特定的要求,PublishSubject 工作得很好,因为我们希望从它停止的地方继续序列。所以假设事件 1,2,3 在 (B) 中发出,在 (A) 连接回来后,我们只想看到 4, 5, 6。如果我们使用 ReplaySubject,我们会看到 [1, 2, 3], 4, 5、6;或者如果我们使用 BehaviorSubject,我们会看到 3、4、5、6 等。 (来源:How to think about Subjects in RxJava (Part 1))
我已经看到Subject 用于(至少)两种上下文,UI 上下文和侦听器上下文。
- UI 上下文(以 MVVM 为例)
例如here 使用了BehaviorSubject,很清楚他们为什么使用Subject 而不是Observable,但我已将BehaviorSubject 更改为PublishSubject,但应用程序的行为仍然相同。
- 侦听器上下文
为什么他们将project 字段设为BehaviorSubject 而不是PublishSubject?
【问题讨论】:
-
显示它们之间差异的小示例:github.com/selmanon/BehaviorAndPublishSubjectDemo
标签: android rx-java rx-swift reactivex