/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġim . vector . matrix . android . internal . database Ċ Ċ import Ġcom . zh u inden . mon arch y . Mon arch y Ċ import Ġim . vector . matrix . android . internal . util . create Background Handler Ċ import Ġio . realm .* Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ import Ġjava . util . concurrent . atomic . Atomic Reference Ċ Ċ internal Ġinterface ĠLive Entity Observer Ġ{ ĊĠĠĠ Ġfun Ġstart () ĊĠĠĠ Ġfun Ġdispose () ĊĠĠĠ Ġfun Ġis Started (): ĠBoolean Ċ } Ċ Ċ internal Ġabstract Ġclass ĠRealm Live Entity Observer < T Ġ: ĠRealm Object >( protected Ġval Ġrealm Configuration : ĠRealm Configuration ) ĊĠĠĠ Ġ: ĠLive Entity Observer , ĠOrdered Realm Collection ChangeListener < Realm Results < T >> Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠBACK GROUND _ HANDLER Ġ= Ġcreate Background Handler (" LI VE _ ENTITY _ BACKGROUND ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġval Ġquery : ĠMon arch y . Query < T > ĊĠĠĠ Ġprivate Ġval Ġis Started Ġ= ĠAtomic Boolean ( false ) ĊĠĠĠ Ġprivate Ġval Ġbackground Realm Ġ= ĠAtomic Reference < Realm >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġresults : ĠAtomic Reference < Realm Results < T >> ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Started . compare AndSet ( false , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBACK GROUND _ HANDLER . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrealm Ġ= ĠRealm . getInstance ( realm Configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Realm . set ( realm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Results Ġ= Ġquery . createQuery ( realm ). findAll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Results . add ChangeListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= ĠAtomic Reference ( query Results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Started . compare AndSet ( true , Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBACK GROUND _ HANDLER . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . get AndSet ( null ). removeAll Change Listeners () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Realm . get AndSet ( null ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Started (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Started . get () ĊĠĠĠ Ġ} Ċ Ċ }