package Ġcom . example . rx java _ with _ mvp _ in _ kotlin . util . activity Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle .* Ċ import Ġjava . lang . IllegalStateException Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġaria Ġro st ami Ġfar ah Ġon Ġ 7 / 5 / 2 1 Ċ Ġ*/ Ċ class ĠAuto Cle ared Value < T Ġ: ĠAny >( private Ġval Ġactivity : ĠAppCompatActivity ) Ġ: ĊĠĠĠ ĠRead Write Property < AppCompatActivity , ĠT > Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġ_ tmp Value : ĠT ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġobserver : ĠDefault Lifecycle Observer ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġobserver Ġ= Ġobject Ġ: ĠDefault Lifecycle Observer Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Destroy ( owner ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ tmp Value Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . lifecycle . remove Observer ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġactivity . lifecycle . add Observer ( observer ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠAppCompatActivity , Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ_ tmp Value Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠAppCompatActivity , Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġ_ tmp Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" should Ġnever Ġcall Ġauto - cleared - value Ġget Ġwhen Ġit Ġmight Ġnot Ġbe Ġavailable ") ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠAppCompatActivity . auto Cle ared () Ġ= ĠAuto Cle ared Value < T >( this )