package Ġcom . example . covid _ 1 9 tracker . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġjava . util . concurrent . ExecutorService Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Location Repository " Ċ Ċ class ĠLocation Repository Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmy Location Manager : ĠMy Location Manager Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġreceiving Location Updates : ĠLive Data < Boolean > Ġ= Ġmy Location Manager . re ceiving Location Updates ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġstart Location Updates () Ġ= Ġmy Location Manager . start Location Updates () ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġstop Location Updates () Ġ= Ġmy Location Manager . stop Location Updates () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠLocation Repository ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext , Ġexecutor : ĠExecutor Service ): ĠLocation Repository Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ?: ĠLocation Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Location Manager . getInstance ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĠINSTANCE Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }