package Ġio . lam art . reak t ive . li ved ata . sample Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . bad oo . reak t ive . dis posable . Disposable Ċ import Ġcom . bad oo . reak t ive . dis posable . Disposable Wrapper Ċ import Ġcom . bad oo . reak t ive . observable .* Ċ import Ġcom . bad oo . reak t ive . scheduler . create Main Scheduler Ċ import Ġcom . bad oo . reak t ive . subject . behavior . behavior Subject Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠMain Application Ġ: ĠApplication (), ĠViewModel Factory . Owner Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval Ġsubject Ġ= Ġbehavior Subject ( 1 ) ĊĠĠĠ Ġoverride Ġval Ġfactory Ġ= ĠViewModel Factory Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĠMain ViewModel ( subject ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġticks Observable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( create Main Scheduler ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( onNext Ġ= Ġ{ Ġsubject . onNext ( it ) Ġ}) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġfun Ġticks Observable (): ĠObservable < Int > Ġ= ĊĠĠĠ Ġobservable By Emitter Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠ Ġvar Ġticks Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġfuture Ġ= ĠExec utors ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Single Thread Scheduled Executor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. schedule At Fixed Rate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġemitter . onNext ( ticks ++) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= ĠDis posable Wrapper (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set ( object Ġ: ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Disposed : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġit . is Disposed ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( future . cancel ( true )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġemitter . set Disposable ( dis posable ) ĊĠĠĠ Ġ} Ċ