package Ġbr . com . w ak im . mvp _ starter . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġbr . com . w ak im . mvp _ starter . extensions . app Component Ċ import Ġbr . com . w ak im . mvp _ starter . injection . Config Persistent Component Ċ import Ġbr . com . w ak im . mvp _ starter . injection . module . Presenter Module Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . concurrent . atomic . Atomic Long Ċ Ċ class ĠConfig Persistent Delegate Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ID Ġ= Ġ" KEY _ ID " ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġprivate Ġval ĠNEXT _ ID Ġ= ĠAtomic Long ( 0 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġprivate Ġval Ġcomponents Map Ġ= ĠHashMap < Long , ĠConfig Persistent Component >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġid : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġinstance Saved Ġ= Ġfalse ĊĠĠĠ Ġlateinit Ġvar Ġcomponent : ĠConfig Persistent Component ĊĠĠĠĠĠĠĠ Ġget ĊĊĠĠĠ Ġfun ĠonCreate ( context : ĠContext , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠActivity Component Ġand Ġre uses Ġcached ĠConfig Persistent Component Ġif Ġthis Ġis ĊĠĠĠĠĠĠĠ Ġ// Ġbeing Ġcalled Ġafter Ġa Ġconfiguration Ġchange . ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠsavedInstanceState ?. getLong ( KEY _ ID ) Ġ?: ĠNEXT _ ID . get And Increment () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( components Map [ id ] Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Re using ĠConfig Persistent Component Ġid Ġ= Ġ$ id ") ĊĊĠĠĠĠĠĠĠ Ġcomponent Ġ= Ġcomponents Map . get Or Put ( id , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Creating Ġnew ĠConfig Persistent Component Ġid =$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . app Component Ġ+ ĠPres enter Module () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout State . put Long ( KEY _ ID , Ġid ) ĊĠĠĠĠĠĠĠ Ġinstance Saved Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! instance Saved ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Clear ing ĠConfig Persistent Component Ġid =$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents Map . remove ( id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Not ĠClear ing ĠConfig Persistent Component Ġid =$ id ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }