package Ġcom . now y . arch . li ved ata Ċ Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . annotation . Nullable Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ ClassName : ĠĠĠĠĠ ĠSingle LiveData Ċ Ġ* Ġ@ Description : ĠĠĠ Ġ å¤ĦçĲĨ LiveData å¤ļ æ¬¡ åĽŀè°ĥ æķ°æį® éĹ®é¢ĺ Ċ Ġ* Ġ@ Author : ĠĠĠĠĠĠĠĠ ĠNow y Ċ Ġ* Ġ@ Create Date : ĠĠĠĠĠ 2 0 2 0 / 7 / 2 3 Ġ 1 1 : 2 7 Ċ Ġ* Ġ@ Update User : Ċ Ġ* Ġ@ Update Date : ĠĠĠĠĠ 2 0 2 0 / 7 / 2 3 Ġ 1 1 : 2 7 Ċ Ġ* Ġ@ Update Remark : ĠĠ ĠæĽ´æĸ° è¯´æĺİ Ċ Ġ* Ġ@ Version : ĠĠĠĠĠĠĠĠ 1 . 0 Ċ Ġ*/ Ċ class ĠSingle LiveData < T > Ġ: Mutable LiveData < T >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġatomic Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġoverride Ġfun Ġobserve ( owner : ĠLifecycle Owner , Ġobserver : ĠObserver < in ĠT ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . observe ( owner , ĠObserver < T > Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( atomic . compare AndSet ( true , Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver . on Changed ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġoverride Ġfun ĠsetValue (@ Nullable Ġt : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġatomic . set ( true ) ĊĠĠĠĠĠĠĠ Ġsuper . setValue ( t ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġfor Ġcases Ġwhere ĠT Ġis ĠVoid , Ġto Ġmake Ġcalls Ġcleaner . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }