package Ġcom . fb . split screen launcher . util . rx Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* ĠObservable Ġthat Ġnot ifies Ġon Ġonce Ġfor Ġnew Ġupdates Ċ Ġ* Ċ Ġ*/ Ċ class ĠViewModel Event < T >: ĠMutable LiveData < T >() Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġhas Been Handled Ġ= ĠAtomic Boolean ( false ) ĊĊĊĠĠĠ Ġoverride Ġfun Ġobserve ( owner : ĠLifecycle Owner , Ġobserver : ĠObserver < in ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . observe ( owner , ĠObserver < T > Ġ{ Ġt Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Been Handled . compare AndSet ( false , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver . on Changed ( t ) ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠsetValue ( value : ĠT ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġhas Been Handled . set ( false ) ĊĊĠĠĠĠĠĠĠ Ġsuper . setValue ( value ) ĊĠĠĠ Ġ} ĊĊ Ċ }