我正试着把我的头伸向黄金法则(如果有的话):
什么时候使用BehaviorSubject?
和
什么时候使用PublishSubject?
他们之间的差别很明显。
有很多种学科。对于这个特定的需求,PublishSubject工作得很好,因为我们希望从它停止的位置继续它的顺序。因此,假设事件1, 2,3在(B)中发出,在(A)连接回后,我们只想看到4、5、6。如果使用ReplaySubject,我们将看到1、2、3、4、5、6;或者如果我们使用BehaviorSubject,则会看到3、4、5、6等(来源:如何在RxJava中思考主题(第一部分))。
我已经看到Subject在两个上下文(至少)中使用,UI上下文和侦听器上下文。
例如,使用这里 a BehaviorSubject,很清楚为什么他们使用Subject而不是Observable,但我已经将BehaviorSubject更改为PublishSubject,但应用程序的行为仍然相同。
为什么他们把项目字段变成BehaviorSubject而不是PublishSubject?
发布于 2018-04-25 11:25:29
PublishSubject和BehaviorSubject的主要区别在于,后者记住最后发出的项目。正因为如此,当您想要发出BehaviorSubject states. 时,. 非常有用。
为什么他们把项目字段变成BehaviorSubject而不是PublishSubject?
可能是因为他们希望能够使用以下方法检索最后发出的项目:
@Override public @NonNull Observable<Project> project() {
return this.project;
}发布于 2018-08-16 12:53:44
PublishSubject:启动为空,只向订阅者发送新元素。有可能在创建PublishSubject Subject到观察者订阅它之间丢失一个或多个项目,因为创建后立即开始释放元素。
BehaviorSubject:它需要一个初始值和重放 It或最新元素到新的subscribers.由于BehaviorSubject总是发出--最新元素,所以如果不提供默认值,就不能创建该元素。BehaviorSubject有助于描述“随时间变化的值”。例如,生日事件流是一个BehaviorSubject.主题,但是一个人的年龄流是一个
发布于 2020-02-26 12:58:38
出版主题:在这里,如果一个学生进入教室很晚,他只想从那个时候开始听他进入教室。因此,发布将是这个用例的最佳选择。
行为主题:在这里,如果一个学生进入教室很晚,他想听教授教的最近的事情(而不是从一开始),这样他就能了解上下文。所以,在这里,我们将使用行为。
https://stackoverflow.com/questions/50020345
复制相似问题