package Ġjp . co . full er . y akan . li ved ata Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ Ċ /** Ċ Ġ* Ġa Ġsubtype Ġof Ġ[ Mutable LiveData ] Ġthat Ġdo Ġnot Ġhold Ġa Ġvalue Ġafter Ġemit ting Ġa Ġvalue . Ċ Ġ*/ Ċ class ĠEvent LiveData < T Ġ: ĠAny > Ġ: ĠMutable LiveData < T >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġobserve ( owner : ĠLifecycle Owner , Ġobserver : ĠObserver < in ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnull Ign oring Observer Ġ= ĠNull Ign oring Observer ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . observe ( owner , Ġnull Ign oring Observer ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve Fore ver ( observer : ĠObserver < in ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnull Ign oring Observer Ġ= ĠNull Ign oring Observer ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . observe Fore ver ( null Ign oring Observer ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetValue ( value : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġset Ġnull Ġafter Ġemit ting Ġa Ġvalue ĊĠĠĠĠĠĠĠ Ġsuper . setValue ( value ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġsuper . setValue ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġobserver Ġthat Ġignore Ġnull Ġvalue ĊĠĠĠ Ġprivate Ġclass ĠNull Ign oring Observer < T Ġ: ĠAny >( val Ġobserver : ĠObserver < in ĠT >) Ġ: ĠObserver < T ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged ( t : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t Ġ!= Ġnull ) Ġobserver . on Changed ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ