package Ġweather . di Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroidx . collection . Simple Array Map Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle . Generic Lifecycle Observer Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġweather . di . internal . Di Cache Fragment Ċ Ċ @ Module Ċ object ĠDi Module Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ"@ app : di - cache " ĊĠĠĠ Ġprivate Ġval Ġcaches Ġ= ĠSimple Array Map < Activity , ĠDi Cache >() ĊĊĠĠĠ Ġprivate Ġfun ĠFragment Activity . init Cache (): ĠDi Cache Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcache Ġ= Ġsupport FragmentManager . find Fragment By Tag ( TAG ) Ġas ? ĠDi Cache ĊĠĠĠĠĠĠĠ Ġif Ġ( cache Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Ġ= ĠDi Cache Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( cache , ĠTAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcache ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġprovides Cache ( activity : ĠFragment Activity ): ĠDi Cache Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcache Ġ= Ġcaches [ activity ] ĊĠĠĠĠĠĠĠ Ġif Ġ( cache Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Ġ= Ġcaches [ activity ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cache Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Ġ= Ġactivity . init Cache () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaches . put ( activity , Ġcache ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . lifecycle . add Observer ( Cache Lifecycle Observer ( cache s , Ġactivity )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcache !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠCache Lifecycle Observer ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcaches : ĠSimple Array Map < Activity , ĠDi Cache >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactivity : ĠActivity ĊĠĠĠ Ġ) Ġ: ĠGeneric Lifecycle Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( source : ĠLifecycle Owner ?, Ġevent : ĠLifecycle . Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Ġ== ĠLifecycle . Event . ON _ DESTROY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaches . remove ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ