package Ġs ke let or . memory Ċ Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġs ke let or . Skeleton Loader Ċ import Ġs ke let or . annotation . Experimental S ke let or Api Ċ import Ġs ke let or . skeleton . RecyclerView Skeleton Ċ import Ġs ke let or . skeleton . Skeleton Ċ import Ġs ke let or . skeleton . TextView Skeleton Ċ import Ġs ke let or . skeleton . View Skeleton Ċ import Ġs ke let or . target . View Target Ċ import Ġs ke let or . util . s ke let or Manager Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Deferred Ċ Ċ @ Opt In ( Experimental S ke let or Api :: class ) Ċ internal Ġclass ĠDelegate Service ( ĊĠĠĠ Ġprivate Ġval Ġimage Loader : ĠS keleton Loader Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Target Delegate ( ĊĠĠĠĠĠĠĠ Ġskeleton : ĠS keleton ĊĠĠĠ Ġ): ĠTarget Delegate Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView Target Delegate ( skeleton , Ġskeleton . target ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġcreate Skeleton Delegate ( ĊĠĠĠĠĠĠĠ Ġskeleton : ĠS keleton , ĊĠĠĠĠĠĠĠ Ġtarget Delegate : ĠTarget Delegate , ĊĠĠĠĠĠĠĠ Ġlifecycle : ĠLifecycle , ĊĠĠĠĠĠĠĠ Ġmain Dispatcher : ĠCor outine Dispatcher , ĊĠĠĠĠĠĠĠ Ġdeferred : ĠDeferred < *> ĊĠĠĠ Ġ): ĠS keleton Delegate ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġskeleton Delegate : ĠS keleton Delegate ĊĠĠĠĠĠĠĠ Ġwhen Ġ( skeleton ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Skeleton , Ġis ĠRecyclerView Skeleton , Ġis ĠTextView Skeleton Ġ-> Ġwhen Ġ( val Ġtarget Ġ= Ġskeleton . target ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Target < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskeleton Delegate Ġ= ĠView Target Skeleton Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader Ġ= Ġimage Loader , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskeleton Ġ= Ġskeleton , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= Ġtarget Delegate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Ġ= Ġlifecycle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher Ġ= Ġmain Dispatcher , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Ġ= Ġdeferred ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( skeleton Delegate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . view . s ke let or Manager . setCurrent Skeleton ( skeleton Delegate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskeleton Delegate Ġ= ĠBase Request Delegate ( lifecycle , Ġmain Dispatcher , Ġdeferred ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( skeleton Delegate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġskeleton Delegate ĊĠĠĠ Ġ} Ċ } Ċ