package Ġcom . rx java 2 . android . samples . ui . operators Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . rx java 2 . android . samples . R Ċ import Ġcom . rx java 2 . android . samples . utils . App Constant Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . subjects . Replay Subject Ċ import Ġkotlinx . android . synt hetic . main . activity _ example .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġa mit she k har Ġon Ġ 1 7 / 1 2 / 1 6 . Ċ Ġ*/ Ċ class ĠRe play Subject Example Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġ// var Ġbtn : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġ// var ĠtextView : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ example ) ĊĠĠĠĠĠĠĠ Ġ// btn Ġ= ĠfindViewById < Button ? >( R . id . btn ) ĊĠĠĠĠĠĠĠ Ġ// textView Ġ= ĠfindViewById < TextView ? >( R . id . textView ) ĊĠĠĠĠĠĠĠ Ġbtn !!. setOnClickListener Ġ{ Ġdo Some Work () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠRe play Subject Ġemits Ġto Ġany Ġobserver Ġall Ġof Ġthe Ġitems Ġthat Ġwere Ġemitted ĊĠĠĠĠ Ġ* Ġby Ġthe Ġsource ĠObservable , Ġregardless Ġof Ġwhen Ġthe Ġobserver Ġsub scri bes . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo Some Work () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠRe play Subject . create < Int ?> () ĊĠĠĠĠĠĠĠ Ġsource . subscribe ( getFirst Observer () !! ) Ġ// Ġit Ġwill Ġget Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ĊĠĠĠĠĠĠĠ Ġsource . onNext ( 1 ) ĊĠĠĠĠĠĠĠ Ġsource . onNext ( 2 ) ĊĠĠĠĠĠĠĠ Ġsource . onNext ( 3 ) ĊĠĠĠĠĠĠĠ Ġsource . onNext ( 4 ) ĊĠĠĠĠĠĠĠ Ġsource . onComplete () ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* Ġit Ġwill Ġemit Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 Ġfor Ġsecond Ġobserver Ġalso Ġas Ġwe Ġhave Ġused Ġreplay ĊĠĠĠĠĠĠĠĠ Ġ*/ source . subscribe ( get Second Observer () !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget First Observer (): ĠObserver < Int ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠObserver < Int ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠFirst Ġon Subscribe Ġ: Ġ" Ġ+ Ġd . is Disposed ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append (" ĠFirst Ġon Next Ġ: Ġvalue Ġ: Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠFirst Ġon Next Ġvalue Ġ: Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append (" ĠFirst ĠonError Ġ: Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠFirst ĠonError Ġ: Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append (" ĠFirst ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠFirst ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Second Observer (): ĠObserver < Int ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠObserver < Int ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append (" ĠSecond Ġon Subscribe Ġ: Ġis Disposed Ġ:" Ġ+ Ġd . is Disposed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠSecond Ġon Subscribe Ġ: Ġ" Ġ+ Ġd . is Disposed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append (" ĠSecond Ġon Next Ġ: Ġvalue Ġ: Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠSecond Ġon Next Ġvalue Ġ: Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append (" ĠSecond ĠonError Ġ: Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠSecond ĠonError Ġ: Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append (" ĠSecond ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView !!. append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠSecond ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠRe play Subject Example Activity :: class . java . simple Name ĊĠĠĠ Ġ} Ċ }