Ich habe eine einfache RxJava, mit ReplaySubject, ich könnte das Ergebnis erhalten, wo alle 3 Zahlen gedruckt werden.RxJava BehaviorSubject, das den letzten Artikel nicht ausgibt?
val observable : Observable<Int> = Observable.just(1, 2, 3)
val subject = ReplaySubject.create<Int>()
observable.subscribe(subject)
subject.subscribe{
result ->
System.out.println("Start $result in Subscription Result")
}
Wenn ich zum Verhalten ändern, erwarte ich, dass die dritte Zahl d 3 gedruckt werden, wie ich immer dachte Verhalten das letzte emittiert Element zu wiederholen ist.
val observable : Observable<Int> = Observable.just(1, 2, 3)
val subject = BehaviorSubject.create<Int>()
observable.subscribe(subject)
subject.subscribe{
result ->
System.out.println("Start $result in Subscription Result")
}
Es wird jedoch nichts gedruckt. Warum?
Habe ich hier etwas Wichtiges vermisst? Wenn ja, lassen Sie mich wissen, wie ich den angenommenen letzten Gegenstand (d. H. 3) drucken lassen kann.
'BehaviorSubject' behält das letzte Element nach der Fertigstellung durch Entwurf nicht. Sie sollten 'ReplaySubject.createWithSize (1)' verwenden, um den ältesten Test immer wieder abspielen zu lassen, sogar über die Upstream-Vervollständigung hinaus. – akarnokd
Danke @akarnokd. Wie wenn ich nur möchte, dass der letzte Gegenstand ausgestrahlt wird, aber nicht alle? – Elye