I'm trying to get my head around the golden rule (if any) about:
When to use BehaviorSubject ?
and
When to use PublishSubject ?
The difference between them is very clear
There are many kinds of subjects. For this specific requirement, a PublishSubject works well because we wish to continue the sequence from where it left off. So assuming events 1,2,3 were emitted in (B), after (A) connects back we only want to see 4, 5, 6. If we used a ReplaySubject we would see [1, 2, 3], 4, 5, 6; or if we used a BehaviorSubject we would see 3, 4, 5, 6 etc. (source : How to think about Subjects in RxJava (Part 1))
I have seen that Subject
's are used in two contexts (at least), UI context and listener context.
- UI context (MVVM as example)
For example here a BehaviorSubject
is used, and it's clear why they use Subject
and not Observable
but I have changed the BehaviorSubject
to PublishSubject
but the app behavior still the same.
- Listener context
Why they make project field a BehaviorSubject
and not PublishSubject
?