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