-
Notifications
You must be signed in to change notification settings - Fork 0
Subjects β Replay Subject
Devrath edited this page Dec 28, 2023
·
2 revisions

class ReplaySubjectDemoVm @Inject constructor(context: Application) : AndroidViewModel(context) {
private val disposable = CompositeDisposable()
private val subject = ReplaySubject.create<String>(2)
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()
}
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:-> The Phantom Menace
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
- It is similar to
behaviour subject
but we can specify an optional size of the elements that can be emitted when new element is subscribed.