-
Notifications
You must be signed in to change notification settings - Fork 0
Subjects β Behaviour Subject
Devrath edited this page Dec 28, 2023
·
2 revisions
class BehaviourSubjectDemoVm @Inject constructor(context: Application) : AndroidViewModel(context) {
private val disposable = CompositeDisposable()
private val subject = BehaviorSubject.create<String>()
fun demo() {
// Subscriber - 1
subject.subscribeBy(
onNext = { println("Subscriber-1:-> $it") },
onError = { println("Subscriber-1:-> Error") },
onComplete = { println("Subscriber-1:-> Complete") }
).addTo(disposable)
subject.onNext(episodeI)
// Subscriber - 2
subject.subscribeBy(
onNext = { println("Subscriber-2:-> $it") },
onError = { println("Subscriber-2:-> Error") },
onComplete = { println("Subscriber-2:-> Complete") }
).addTo(disposable)
subject.onNext(episodeII)
// Subscriber - 3
subject.subscribeBy(
onNext = { println("Subscriber-3:-> $it") },
onError = { println("Subscriber-3:-> Error") },
onComplete = { println("Subscriber-3:-> Complete") }
).addTo(disposable)
subject.onNext(episodeIII)
// Indicate onComplete of the publish subject
subject.onComplete()
// Try to publish a new onNext event
//subject.onNext(episodeIII)
}
override fun onCleared() {
super.onCleared()
disposable.clear()
}
}Subscriber-1:-> The Phantom Menace
Subscriber-2:-> The Phantom Menace
Subscriber-1:-> Attack of the Clones
Subscriber-2:-> Attack of the Clones
Subscriber-3:-> Attack of the Clones
Subscriber-1:-> Revenge of the Sith
Subscriber-2:-> Revenge of the Sith
Subscriber-3:-> Revenge of the Sith
Subscriber-1:-> Complete
Subscriber-2:-> Complete
Subscriber-3:-> Complete- Observe that when the new subscriber joins in it gets the latest subscription that was earlier emitted.
- Now when an emission is done, all the subscribers get the new emission.
