package Ġcom . mot ondon . rx java demo app . view . hot observable s Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . ActionBar Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ Ċ import Ġcom . mot ondon . rx java demo app . R Ċ import Ġcom . mot ondon . rx java demo app . view . base . Hot Observable s Base Activity Ċ Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ import Ġkotlinx . android . synt hetic . main . activity _ hot _ observable _ replay _ example .* Ċ import Ġrx . Observable Ċ import Ġrx . Scheduler Ċ import Ġrx . Subscription Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ Ċ /** Ċ Ġ* ĠThis Ġexample Ġdemonstrates Ġhow Ġto Ġuse ĠConnect able Observable :: replay () Ġoperator . Ċ Ġ* Ċ Ġ* ĠAs Ġsoon Ġas Ġwe Ġcall Ġconnect (), Ġour Ġobservable Ġwill Ġstart Ġemit Ġitems Ġand Ġalso Ġcollect Ġthem Ġ( depends Ġon Ġthe Ġreplay () Ġvariation , Ċ Ġ* Ġcollected Ġitems Ġmight Ġvary ) Ċ Ġ* Ċ Ġ* ĠL ater , Ġas Ġwe Ġsubscribe Ġour Ġsubscribers , Ġit Ġwill Ġ" replay " Ġall Ġcollected Ġitems . Ċ Ġ* Ċ Ġ*/ Ċ class ĠHot Observable Replay Example Activity Ġ: ĠHot Observable s Base Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġreply Ok Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ hot _ observable _ replay _ example ) ĊĊĊĠĠĠĠĠĠĠ Ġbtn Replay . setOnClickListener { Ġon Replay Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Replay With BufferSize . setOnClickListener { Ġon Replay With BufferSize Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Replay With Time . setOnClickListener { Ġon Replay With Time Button Click () Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn Connect . setOnClickListener { Ġon Connect Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Subscribe First . setOnClickListener { Ġon Subscribe First Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Subscribe Second . setOnClickListener { Ġon Subscribe Second Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Un subscribe First . setOnClickListener { Ġon Un subscribe First Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Un subscribe Second . setOnClickListener { Ġon Un subscribe Second Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Disconnect . setOnClickListener { Ġon Disconnect Button Click () Ġ} ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġintent . getString Extra (" TITLE ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Emit ted Numbers . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtv Result First Subscription . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtv Result Second Subscription . text Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Replay Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Un subscribed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Replay Button Click () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplay () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Test Ġis Ġalready Ġrunning ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Replay With BufferSize Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Un subscribed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Replay With BufferSize Button Click () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplay With BufferSize () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Test Ġis Ġalready Ġrunning ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Replay With Time Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Un subscribed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Replay With Time Button Click () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplay With Time () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Test Ġis Ġalready Ġrunning ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Connect Button Click () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! reply Ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Please , Ġchoose Ġone Ġreplay Ġoption Ġprior Ġto Ġconnect .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Un subscribed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Connect Button Click () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Subscription Ġ= Ġconnect () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Test Ġis Ġalready Ġrunning ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Subscribe First Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! reply Ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Please , Ġchoose Ġone Ġreplay Ġoption Ġprior Ġto Ġsubscribe .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is First Subscription Un subscribed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Subscribe First Button Click () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Subscription Ġ= Ġsubscribe First () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" First Ġsubscriber Ġalready Ġstarted ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġon Subscribe Second Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! reply Ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Please , Ġchoose Ġone Ġreplay Ġoption Ġprior Ġto Ġsubscribe .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Second Subscription Un subscribed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Subscribe Second Button Click () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Subscription Ġ= Ġsubscribe Second () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Second Ġsubscriber Ġalready Ġstarted ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Un subscribe First Button Click () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Un subscribe First Button Click () ") ĊĠĠĠĠĠĠĠ Ġunsubscribe First ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Un subscribe Second Button Click () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Un subscribe Second Button Click () ") ĊĠĠĠĠĠĠĠ Ġunsubscribe Second ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Disconnect Button Click () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" on Disconnect Button Click () ") ĊĊĠĠĠĠĠĠĠ Ġm Subscription ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Un subscribed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsubscribe First ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsubscribe Second ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisconnect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠToast . makeText ( application Context , Ġ" Observable Ġnot Ġconnected ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġcalling Ġreplay , Ġobservable Ġwill Ġstart Ġemit Ġand Ġreplay () Ġoperator Ġwill Ġcollect Ġthem . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreplay () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" replay () ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirst Ġcreate Ġour Ġobservable . ĠL ater , Ġwhen Ġcalling Ġconnect , Ġit Ġwill Ġstart Ġemit ting Ġitems Ġand Ġcollecting Ġthem . ĊĠĠĠĠĠĠĠ Ġconnect able Ġ= ĠObservable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. interval ( 5 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġnumber Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠAndroid Schedulers . main Thread (). create Worker () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . schedule Ġ{ Ġtv Emit ted Numbers . text Ġ= Ġ"${ tv Emit ted Numbers . text } Ġ$ number " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replay () ĊĊĠĠĠĠĠĠĠ Ġ// ĠUsed Ġonly Ġto Ġprevent Ġuser Ġto Ġclick Ġon Ġthe Ġconnect Ġbutton Ġprior Ġto Ġchoose Ġone Ġof Ġthe Ġreplay () Ġapproaches . ĊĠĠĠĠĠĠĠ Ġreply Ok Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġcalling Ġreplay ( buffer Size ), Ġobservable Ġwill Ġstart Ġemit Ġand Ġcollect Ġitems . ĠIt Ġwill Ġreplay Ġat Ġmost Ġ[ buffer Size ] Ġitems ĊĠĠĠĠ Ġ* Ġemitted Ġby Ġthe Ġobservable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreplay With BufferSize () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" replay With BufferSize ( 5 )") ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirst Ġcreate Ġour Ġobservable . ĠL ater , Ġwhen Ġcalling Ġconnect , Ġit Ġwill Ġstart Ġemit ting Ġitems Ġand Ġcollecting Ġat Ġmost ĠN Ġthem . ĊĠĠĠĠĠĠĠ Ġconnect able Ġ= ĠObservable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. interval ( 5 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġnumber Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠAndroid Schedulers . main Thread (). create Worker () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . schedule Ġ{ Ġtv Emit ted Numbers . text Ġ= Ġ"${ tv Emit ted Numbers . text } Ġ$ number " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe play Ġthe Ġlast Ġ 5 Ġemitted Ġitems . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠUsed Ġonly Ġto Ġprevent Ġuser Ġto Ġclick Ġon Ġthe Ġconnect Ġbutton Ġprior Ġto Ġchoose Ġone Ġof Ġthe Ġreplay () Ġapproaches . ĊĠĠĠĠĠĠĠ Ġreply Ok Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġcalling Ġreplay ( time ), Ġobservable Ġwill Ġstart Ġemit Ġand Ġcollect Ġitems . ĠUp on Ġm Subscription , Ġit Ġwill Ġreplay Ġall Ġitems Ġemitted ĊĠĠĠĠ Ġ* Ġby Ġthe Ġobservable Ġwithin Ġa Ġspecified Ġtime Ġwindow . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreplay With Time () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" replay With Time ( 6 Ġseconds )") ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirst Ġcreate Ġour Ġobservable . ĠL ater , Ġwhen Ġcalling Ġconnect , Ġit Ġwill Ġstart Ġemit ting Ġitems Ġand Ġcollecting Ġthem . ĊĠĠĠĠĠĠĠ Ġconnect able Ġ= ĠObservable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. interval ( 5 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġnumber Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠAndroid Schedulers . main Thread (). create Worker () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . schedule Ġ{ Ġtv Emit ted Numbers . text Ġ= Ġ"${ tv Emit ted Numbers . text } Ġ$ number " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe play Ġall Ġitems Ġemitted Ġby Ġthe Ġobservable Ġwithin Ġthis Ġtime Ġwindow . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replay ( 6 , ĠTimeUnit . SECONDS ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠUsed Ġonly Ġto Ġprevent Ġuser Ġto Ġclick Ġon Ġthe Ġconnect Ġbutton Ġprior Ġto Ġchoose Ġone Ġof Ġthe Ġreplay () Ġapproaches . ĊĠĠĠĠĠĠĠ Ġreply Ok Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġthis Ġbutton Ġis Ġpressed , Ġobservable Ġwill Ġstart Ġemit ting Ġitems . ĠIf Ġthere Ġis Ġalready Ġa Ġm Subscription , Ġit Ġwill Ġstart Ġreceiving ĊĠĠĠĠ Ġ* Ġemitted Ġitems . ĠOtherwise Ġemitted Ġitems Ġwill Ġbe Ġcollected Ġand Ġafter Ġa Ġm Subscription , Ġthey Ġwill Ġbe Ġreplay ed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconnect (): ĠSubscription ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" connect () ") ĊĠĠĠĠĠĠĠ Ġreturn Ġconnect able ?. connect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġwe Ġare Ġalready Ġconnected Ġto Ġthe Ġobservable , Ġwhen Ġthis Ġbutton Ġis Ġpressed , Ġall Ġemitted Ġitems Ġwill Ġbe Ġreplay ed Ġ( depends Ġon ĊĠĠĠĠ Ġ* Ġwhich Ġreplay Ġvariant Ġwe Ġare Ġtesting , Ġreplay ed Ġitems Ġmight Ġvary ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsubscribe First (): ĠSubscription ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" subscribe First () ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġconnect able ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( apply Schedulers ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( result Subscriber ( tv Result First Subscription )) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġwe Ġare Ġalready Ġconnected Ġto Ġthe Ġobservable , Ġwhen Ġthis Ġbutton Ġis Ġpressed , Ġall Ġemitted Ġitems Ġwill Ġbe Ġreplay ed Ġ( depends Ġon ĊĠĠĠĠ Ġ* Ġwhich Ġreplay Ġvariant Ġwe Ġare Ġtesting , Ġreplay ed Ġitems Ġmight Ġvary ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsubscribe Second (): ĠSubscription ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" subscribe Second () ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġconnect able ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( apply Schedulers ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( result Subscriber ( tv Result Second Subscription )) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBy Ġun sub scri bing Ġthe Ġsubscriber Ġreturned Ġby Ġthe Ġconnect () Ġmethod , Ġall Ġsubscriptions Ġwill Ġstop Ġreceiving Ġitems . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdisconnect () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" disconnect () ") ĊĠĠĠĠĠĠĠ Ġm Subscription ?. unsubscribe () ĊĊĠĠĠĠĠĠĠ Ġreply Ok Ġ= Ġfalse ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠHot Observable Replay Example Activity :: class . java . simple Name ĊĠĠĠ Ġ} Ċ } Ċ