package Ġcom . et ern al . base lib . base Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . et ern al . base lib . event . Single Live Event Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . functions . Consumer ĊĊ Ċ open Ġclass ĠBase ViewModel < M Ġ: ĠI Model >( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ), ĊĠĠĠ ĠI ViewModel , ĊĠĠĠ ĠConsumer < Disposable > Ġ{ ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġmodel : ĠM ĊĠĠĠ Ġprotected Ġvar Ġm Composite Disposable : ĠComposite Disposable ? Ġ= Ġnull ĊĠĠĠ Ġval Ġui : ĠUI Change LiveData < Void > ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġui Ġ= ĠUI Change LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġun Dispose () ĊĠĠĠĠĠĠĠ Ġmodel . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Dispose ( dis posable : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Composite Disposable Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Composite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Composite Disposable ?. add ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġun Dispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Composite Disposable ?. clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccept ( t : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Dispose ( t ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// å°Ĩ ĠLifecycle Observer Ġ æ³¨åĨĮ ç»Ļ ĠLifecycle Owner Ġ åĲİ Ġ@ On Lifecycle Event Ġ æīį åı¯ä»¥ æŃ£å¸¸ ä½¿çĶ¨ ĊĠĠĠ Ġfun Ġinject Lifecycle ( lifecycle : ĠLifecycle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( this ) ĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer (( model Ġas ĠLifecycle Observer )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Any ( owner : ĠLifecycle Owner ?, Ġevent : ĠLifecycle . Event ?) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠUI Change LiveData < T > Ġ: ĠSingle Live Event < T >() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġshow Dialog Event Ġ= ĠSingle Live Event < String >() ĊĠĠĠĠĠĠĠ Ġvar Ġdismiss Dialog Event Ġ= ĠSingle Live Event < Void >() ĊĠĠĠĠĠĠĠ Ġvar Ġfinish Event Ġ= ĠSingle Live Event < Void >() ĊĠĠĠĠĠĠĠ Ġvar Ġfinish Result Event = Single Live Event < Intent ?> () ĊĠĠĠĠĠĠĠ Ġvar Ġon Back Pressed Event Ġ= ĠSingle Live Event < Void >() ĊĠĠĠĠĠĠĠ Ġvar Ġfinish Refresh Event Ġ= ĠSingle Live Event < Void >() ĊĠĠĠĠĠĠĠ Ġvar Ġfinish Load More Event Ġ= ĠSingle Live Event < Void >() ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġobserve ( owner : ĠLifecycle Owner , Ġobserver : ĠObserver < in ĠT >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . observe ( owner , Ġobserver ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }