package Ġcom . example . rx demo 1 Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġio . reactivex . subjects . Async Subject Ċ Ċ // ĠA ĠSubject Ġis Ġa Ġsort Ġof Ġbridge Ġor Ġproxy Ġthat Ġacts Ġboth Ġas Ġan Ġobserver Ġand Ġas Ġan ĠObservable . Ċ // ĠBecause Ġit Ġis Ġan Ġobserver , Ġit Ġcan Ġsubscribe Ġto Ġone Ġor Ġmore ĠObservable s , Ġand Ġbecause Ġit Ġis Ġan ĠObservable , Ċ // Ġit Ġcan Ġpass Ġthrough Ġthe Ġitems Ġit Ġob serves Ġby Ġre - emit ting Ġthem , Ġand Ġit Ġcan Ġalso Ġemit Ġnew Ġitems . Ċ Ċ // ĠAsync Subject Ġemits Ġthe Ġlast Ġvalue Ġof Ġthe Ġsource ĠObservable ( and Ġonly Ġthe Ġlast Ġvalue ) Ġonly Ġafter Ġthat Ġsource ĠObservable Ġcompletes . Ċ class ĠMainActivity 1 4 Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= Ġ" MainActivity 1 4 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main 3 ) ĊĊĠĠĠĠĠĠĠ Ġasync Subject Demo 1 () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġasync Subject Demo 1 () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġobservable Ġ= ĠObservable . just (" Java ", Ġ" Kotlin ", Ġ" Xml ", Ġ" JSON ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġasync Subject Ġ= ĠAsync Subject . create < String >() ĊĠĠĠĠĠĠĠ Ġobservable . subscribe ( async Subject ) Ġ Ġ// async Subject Ġact ing Ġas Ġan ĠObserver ĊĊĠĠĠĠĠĠĠ Ġ// Ġall Ġob servers Ġwill Ġonly Ġget ĠJSON ĊĠĠĠĠĠĠĠ Ġasync Subject . subscribe ( getFirst Observer ()) Ġ Ġ// async Subject Ġact ing Ġas Ġan ĠObservable ĊĠĠĠĠĠĠĠ Ġasync Subject . subscribe ( get Second Observer ()) ĊĠĠĠĠĠĠĠ Ġasync Subject . subscribe ( get Third Observer ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget First Observer () Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠObserver < String >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" First ĠObserver Ġon Subscribe ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" First ĠObserver ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( s : String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" First ĠObserver Ġon Next Ġ$ s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" First ĠObserver ĠonError ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Second Observer () Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠObserver < String >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Second ĠObserver Ġon Subscribe ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Second ĠObserver ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( s : String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Second ĠObserver Ġon Next Ġ$ s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Second ĠObserver ĠonError ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Third Observer () Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġobject Ġ: ĠObserver < String >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Third ĠObserver Ġon Subscribe ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Third ĠObserver ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( s : String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Third ĠObserver Ġon Next Ġ$ s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Third ĠObserver ĠonError ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobserver ĊĠĠĠ Ġ} Ċ }