Я пытаюсь обдумать золотое правило (если есть) о:
Когда использовать BehaviorSubject?
и
Когда использовать PublishSubject?
Разница между ними очень ясна
Есть много видов предметов. Для этого конкретного требования PublishSubject работает хорошо, потому что мы хотим продолжить последовательность с того места, где он остановился. Таким образом, предполагая, что события 1,2,3 были отправлены в (B), после того, как (A) соединится обратно, мы хотим видеть только 4, 5, 6. Если бы мы использовали ReplaySubject, мы бы увидели [1, 2, 3], 4, 5, 6; или если бы мы использовали BehaviorSubject, мы бы увидели 3, 4, 5, 6 и т. д.
(источник: Как думать о предметах в RxJava (часть 1) )
Я видел, что Subject
используются в двух контекстах (как минимум), контексте пользовательского интерфейса и контексте слушателя.
- Контекст интерфейса (например, MVVM)
Например, здесь a BehaviorSubject
используется, и понятно, почему они используют Subject
, а не Observable
, но я изменил BehaviorSubject
на PublishSubject
, но поведение приложения по-прежнему то же самое.
Почему они делают проект поле BehaviorSubject
, а не PublishSubject
?