package Ġcom . ra q un . live . live . memory Ċ Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . ACTIVITY _ SERVICE Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . ra q un . live . core . Live Result Ċ import Ġjava . util .* Ċ Ċ class ĠMemory Info LiveData ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġupdate Period : ĠLong Ġ= ĠPER IOD ) Ġ: ĊĠĠĠĠĠĠĠ ĠLive Data < Live Result < Memory Info Data >>() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmemory Info Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Manager . Memory Info () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġactivity Manager Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ? ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġruntime Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRuntime . get Runtime () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtimer : ĠTimer ĊĊĠĠĠ Ġoverride Ġfun Ġon Active () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Active () ĊĠĠĠĠĠĠĠ Ġtimer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠ Ġtimer . schedule At Fixed Rate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Memory Info LiveData () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Period ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Inactive () Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer . cancel () ĊĠĠĠĠĠĠĠ Ġsuper . on Inactive () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġpost Memory Info LiveData () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Manager ?. get Memory Info ( memory Info ) ĊĠĠĠĠĠĠĠ Ġpost Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemory Info LiveData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Memory Ġ= Ġmemory Info . total Mem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Memory Ġ= Ġmemory Info . avail Mem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpercent Available Rounded Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 0 0 Ġ* Ġ( total Memory !! Ġ- Ġavailable Memory !! ) Ġ/ Ġtotal Memory !! ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġruntime Max Memory Ġ= Ġruntime . max Memory () Ġ/ Ġ 1 0 4 8 5 7 6 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġruntime Total Memory Ġ= Ġruntime . total Memory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġruntime Free Memory Ġ= Ġruntime . free Memory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmemory Info LiveData ( block : ĠMemory Info Data . () Ġ-> ĠUnit ): ĠLive Result < Memory Info Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmemory Info Ġ= ĠMemory Info Data () ĊĠĠĠĠĠĠĠ Ġmemory Info . block () ĊĠĠĠĠĠĠĠ Ġreturn ĠLive Result . Live Value ( memory Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPER IOD Ġ= Ġ 1 0 0 0 L ĊĠĠĠ Ġ} Ċ }