/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . we ar . watch face . control Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroidx . annotation . Ui Thread Ċ Ċ /** ĠKeep s Ġtrack Ġof Ġ[ Interactive Watch Face Instance ] s . Ġ*/ Ċ internal Ġclass ĠInteractive Instance Manager Ġ{ ĊĠĠĠ Ġprivate Ġconstructor () ĊĊĠĠĠ Ġprivate Ġclass ĠRef Count ed Interactive Watch Face Instance ( ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠInteractive Watch Face Instance , ĊĠĠĠĠĠĠĠ Ġvar Ġref count : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinstances Ġ= ĠHashMap < String , ĠRef Count ed Interactive Watch Face Instance >() ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Synt hetic Accessor ") ĊĠĠĠĠĠĠĠ Ġ@ Ui Thread ĊĠĠĠĠĠĠĠ Ġfun Ġadd Instance ( instance : ĠInteractive Watch Face Instance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire (! instances . containsKey ( instance . instanceId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstances [ instance . instanceId ] Ġ= ĠRef Count ed Interactive Watch Face Instance ( instance , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Synt hetic Accessor ") ĊĠĠĠĠĠĠĠ Ġ@ Ui Thread ĊĠĠĠĠĠĠĠ Ġfun Ġget And Ret ain Instance ( instanceId : ĠString ): ĠInteractive Watch Face Instance Ġ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Count ed Instance Ġ= Ġinstances [ instanceId ] Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref Count ed Instance . ref count ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġref Count ed Instance . instance ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Synt hetic Accessor ") ĊĠĠĠĠĠĠĠ Ġ@ Ui Thread ĊĠĠĠĠĠĠĠ Ġfun Ġrelease Instance ( instanceId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġinstances [ instanceId ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(-- instance . ref count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance . instance . engine . on Destroy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstances . remove ( instanceId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }