- 
                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 subjectbut we can specify an optional size of the elements that can be emitted when new element is subscribed.
