package Ġinfo . lj ung qv ist . ya ol . android . preferences Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . SharedPreferences Ċ import Ġinfo . lj ung qv ist . ya ol . Mutable Observable Ċ import Ġinfo . lj ung qv ist . ya ol . Observable Impl Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . Future ĊĊ Ċ @ Suppress Lint (" Apply Shared Pref ") Ċ internal Ġclass ĠObservable Preference < T >( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpreferences : Ġ() Ġ-> ĠSharedPreferences , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġget : ĠSharedPreferences .( String , ĠT ) Ġ-> ĠT , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġset : ĠSharedPreferences . Editor .( String , ĠT ) Ġ-> ĠSharedPreferences . Editor , ĊĠĠĠĠĠĠĠ Ġdefault : Ġ( SharedPreferences ) Ġ-> ĠT Ċ ) Ġ: ĠObservable Impl < T >(), ĠMutable Observable < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ value : ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġdefault : ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġfuture : ĠFuture < *> Ġ= Ġread Executor . submit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= Ġpreferences () ĊĠĠĠĠĠĠĠ Ġval ĠdefaultValue Ġ= Ġdefault ( prefs ) ĊĠĠĠĠĠĠĠ Ġthis . default Ġ= ĠdefaultValue ĊĊĠĠĠĠĠĠĠ Ġ_ value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( defaultValue Ġ!= Ġnull Ġ&& Ġ! prefs . contains ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Executor . submit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . edit (). set ( key , ĠdefaultValue ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . get ( key , ĠdefaultValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġvalue : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfuture . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ value Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfuture . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġvalue Ġ?: Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Ġ= ĠnewValue Ġ!= Ġ_ value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ value Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( update ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Executor . submit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences (). edit (). set ( key , Ġthis . value ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġread Executor Ġ= ĠExec utors . new Cached ThreadPool () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwrite Executor Ġ= ĠExec utors . new Single Thread Executor () ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ