package Ġcom . hq . tool . cache Ċ Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . Buffered Writer Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . FileReader Ċ import Ġjava . io . FileWriter Ċ import Ġjava . io . IOException Ċ import Ġjava . io . Object InputStream Ċ import Ġjava . io . Object OutputStream Ċ import Ġjava . io . Random Access File Ċ import Ġjava . io . Serializable Ċ import Ġjava . util . Collections Ċ import Ġjava . util . HashMap Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ import Ġjava . util . concurrent . atomic . Atomic Long Ċ Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . PixelFormat Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġcom . hq . tool . log Ċ Ċ /** Ċ Ġ* AC ache . get ( this ). put ( key , value ) Ċ Ġ*/ Ċ class ĠA Cache Ġprivate Ġconstructor ( cacheDir : ĠFile , Ġmax _ size : ĠLong , Ġmax _ count : ĠInt ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Cache : ĠA CacheManager ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! cacheDir . exists () Ġ&& Ġ! cacheDir . mkdir s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(" can 't Ġmake Ġdirs Ġin Ġ" Ġ+ Ġcache Dir . absolute Path ). log (" AC ache ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Cache Ġ= ĠA CacheManager ( cacheDir , Ġmax _ size , Ġmax _ count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ// Ġ============ ĠString æķ°æį® Ġ è¯» åĨĻ Ġ= ============= ĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ ĠString æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ String æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġm Cache . new File ( key ) ĊĠĠĠĠĠĠĠ Ġvar Ġout : ĠBuffered Writer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Ġ= ĠBuffered Writer ( FileWriter ( file ), Ġ 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( out Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Cache . put ( file ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ ĠString æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ String æķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġsave Time ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæĹ¶éĹ´ ï¼Į åįķä½į ï¼ļ ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠString , Ġsave Time : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , ĠUtils . new String With Date Info ( save Time , Ġvalue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¯»åıĸ ĠString æķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return ĠString Ġæķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget AsString ( key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġm Cache . get ( key ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġremove File Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġin b : ĠBufferedReader ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin b Ġ= ĠBufferedReader ( FileReader ( file )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġread String Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Line : String ? ="" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread String Ġ+= Ġcurrent Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Line Ġ= Ġin b . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( current Line != Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Utils . is Due ( readString )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUtils . clear Date Info ( readString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove File Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( in b Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin b . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( remove File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ// Ġ= ============ ĠJSONObject Ġæķ°æį® Ġ è¯» åĨĻ Ġ= ============= ĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ ĠJSONObject æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ JSON æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , Ġvalue . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ ĠJSONObject æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ JSONObject æķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġsave Time ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæĹ¶éĹ´ ï¼Į åįķä½į ï¼ļ ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠJSONObject , Ġsave Time : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , Ġvalue . toString (), Ġsave Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¯»åıĸ JSONObject æķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return ĠJSONObject æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget As JSONObject ( key : ĠString ): ĠJSONObject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠJSON String Ġ= Ġget AsString ( key ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJSONObject ( JSON String ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ// Ġ============ ĠJSONArray Ġæķ°æį® Ġ è¯» åĨĻ Ġ= ============ ĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ ĠJSONArray æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ JSONArray æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠJSONArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , Ġvalue . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ ĠJSONArray æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ JSONArray æķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġsave Time ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæĹ¶éĹ´ ï¼Į åįķä½į ï¼ļ ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠJSONArray , Ġsave Time : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , Ġvalue . toString (), Ġsave Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¯»åıĸ JSONArray æķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return ĠJSONArray æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget As JSONArray ( key : ĠString ): ĠJSONArray ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠJSON String Ġ= Ġget AsString ( key ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJSONArray ( JSON String ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ// Ġ= ============= Ġbyte Ġæķ°æį® Ġ è¯» åĨĻ Ġ= ============ ĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ Ġbyte æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput Byte ( key : ĠString , Ġvalue : ĠByteArray ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġm Cache . new File ( key ) ĊĠĠĠĠĠĠĠ Ġvar Ġout : ĠFileOutputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Ġ= ĠFileOutputStream ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ( value !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( out Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Cache . put ( file ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ Ġbyte æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġsave Time ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæĹ¶éĹ´ ï¼Į åįķä½į ï¼ļ ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput Byte ( key : ĠString , Ġvalue : ĠByteArray ?, Ġsave Time : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , ĠUtils . new ByteArray With Date Info ( save Time , Ġvalue !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ Ġbyte Ġæķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return Ġbyte Ġæķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget As Binary ( key : ĠString ): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠRA File : ĠRandom Access File ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġremove File Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġm Cache . get ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRA File Ġ= ĠRandom Access File ( file , Ġ" r ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= ĠByteArray ( RA File . length (). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRA File . read ( byteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Utils . is Due ( byteArray )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUtils . clear Date Info ( byteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove File Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( RA File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRA File . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( remove File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ ĠSerializable æķ°æį® åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ value ĊĠĠĠĠ Ġ* Ġ@ param Ġsave Time ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæĹ¶éĹ´ ï¼Į åįķä½į ï¼ļ ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠSerializable , Ġsave Time : ĠInt Ġ= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġba os : ĠByteArrayOutputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġo os : ĠObject OutputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo os Ġ= ĠObject OutputStream ( ba os ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo os . write Object ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġba os . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( save Time Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Byte ( key , Ġdata , Ġsave Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Byte ( key , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo os !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¯»åıĸ ĠSerializable æķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return ĠSerializable Ġæķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget As Object ( key : ĠString ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget As Binary ( key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġb ais : ĠByteArrayInputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġo is : ĠObject InputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ais Ġ= ĠByteArrayInputStream ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo is Ġ= ĠObject InputStream ( ba is ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġo is . read Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ais ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo is ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ// Ġ= ============= Ġbitmap Ġæķ°æį® Ġ è¯» åĨĻ Ġ= ============ ĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ Ġbitmap Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ bitmap æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġput Byte ( key , ĠUtils . Bitmap 2 Bytes ( value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ Ġbitmap Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ Ġbitmap Ġæķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġsave Time ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæĹ¶éĹ´ ï¼Į åįķä½į ï¼ļ ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠBitmap ?, Ġsave Time : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput Byte ( key , ĠUtils . Bitmap 2 Bytes ( value ), Ġsave Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¯»åıĸ Ġbitmap Ġæķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return Ġbitmap Ġæķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget As Bitmap ( key : ĠString ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( getAs Binary ( key ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠUtils . Bytes 2 B imap ( getAs Binary ( key ) !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ// Ġ= ============ Ġdrawable Ġæķ°æį® Ġ è¯» åĨĻ Ġ= ============ ĊĠĠĠ Ġ// Ġ================================= ====== ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ Ġdrawable Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ drawable æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠDrawable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , ĠUtils . drawable 2 Bitmap ( value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ Ġdrawable Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ key ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦ Ġdrawable Ġæķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġsave Time ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ çļĦæĹ¶éĹ´ ï¼Į åįķä½į ï¼ļ ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠDrawable , Ġsave Time : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( key , ĠUtils . drawable 2 Bitmap ( value ), Ġsave Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¯»åıĸ ĠDrawable Ġæķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return ĠDrawable Ġæķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget As Drawable ( key : ĠString ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( getAs Binary ( key ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠUtils . bitmap 2 Drawable ( Utils . Bytes 2 B imap ( getAs Binary ( key ) !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ç¼ĵåŃĺ æĸĩä»¶ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return Ġvalue Ġ ç¼ĵåŃĺ çļĦæĸĩä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfile ( key : ĠString ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġm Cache . new File ( key ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( f . exists ()) Ġf Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç§»éĻ¤ æŁĲä¸ª key ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return Ġæĺ¯åĲ¦ ç§»éĻ¤ æĪĲåĬŁ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Cache . remove ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¸ ħ éĻ¤ æīĢæľī æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Cache . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ title Ġ ç¼ĵåŃĺ ç®¡çĲĨ åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ version Ġ 1 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠA CacheManager Ġ( protected Ġvar Ġcache Dir : ĠFile , Ġprivate Ġval Ġsize Limit : ĠLong , Ġprivate Ġval Ġcount Limit : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcache Size : ĠAtomic Long ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcache Count : ĠAtomicInteger ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlast Usage Dates Ġ= ĠCollections ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. synchronized Map ( HashMap < File , ĠLong >()) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Size Ġ= ĠAtomic Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Count Ġ= ĠAtomicInteger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Cache Size And Cache Count () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ è®¡ç®Ĺ Ġcache Size åĴĮ cache Count ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠ Ġfun Ġcalculate Cache Size And Cache Count () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcached Files Ġ= Ġcache Dir . list Files () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cached Files Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cached File Ġin Ġcached Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ+= Ġcalculate Size ( cached File ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Usage Dates [ cached File ] Ġ= Ġcached File . lastModified () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Size . set ( size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Count . set ( count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġput ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcur Cache Count Ġ= Ġcache Count . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cur Cache Count Ġ+ Ġ 1 Ġ> Ġcount Limit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfreed Size Ġ= Ġremove Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Size . add AndGet (- fre ed Size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Cache Count Ġ= Ġcache Count . add AndGet (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Count . add AndGet ( 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Size Ġ= Ġcalculate Size ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcur Cache Size Ġ= Ġcache Size . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cur Cache Size Ġ+ Ġvalue Size Ġ> Ġsize Limit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfreed Size Ġ= Ġremove Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Cache Size Ġ= Ġcache Size . add AndGet (- fre ed Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Size . add AndGet ( value Size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . set LastModified ( currentTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Usage Dates [ file ] Ġ= ĠcurrentTime ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġoperator Ġfun Ġget ( key : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġnew File ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . set LastModified ( currentTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Usage Dates [ file ] Ġ= ĠcurrentTime ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew File ( key : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile ( cacheDir , Ġkey . hashCode (). toString () Ġ+ Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġremove ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġget ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġimage . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Usage Dates . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Size . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġcache Dir . list Files () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( files Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç§»éĻ¤ æĹ§ çļĦæĸĩä»¶ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġremove Next (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Usage Dates . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoldest Usage : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmost Long Used File : ĠFile ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries Ġ= Ġlast Usage Dates . entries ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( last Usage Dates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġlast Value Usage ) Ġin Ġentries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( most Long Used File Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmost Long Used File Ġ= Ġkey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoldest Usage Ġ= Ġlast Value Usage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Value Usage Ġ< Ġoldest Usage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoldest Usage Ġ= Ġlast Value Usage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmost Long Used File Ġ= Ġkey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileSize Ġ= Ġcalculate Size ( most Long Used File !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( most Long Used File !!. delete ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Usage Dates . remove ( most Long Used File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠfileSize ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcalculate Size ( file : ĠFile ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . length () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ title Ġ æĹ¶éĹ´ è®¡ç®Ĺ å·¥åħ· ç±» ĊĠĠĠĠ Ġ* Ġ@ version Ġ 1 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġobject ĠUtils Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Separator Ġ= Ġ' Ġ' ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪ¤æĸŃ ç¼ĵåŃĺ çļĦ String æķ°æį® æĺ¯åĲ¦ åĪ° æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġstr ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue ï¼ļ åĪ° æľŁ äºĨ Ġfalse ï¼ļ è¿ĺ æ²¡æľī åĪ° æľŁ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠ Ġfun Ġis Due ( str : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Due ( str . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪ¤æĸŃ ç¼ĵåŃĺ çļĦ byte æķ°æį® æĺ¯åĲ¦ åĪ° æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdata ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue ï¼ļ åĪ° æľŁ äºĨ Ġfalse ï¼ļ è¿ĺ æ²¡æľī åĪ° æľŁ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠ Ġfun Ġis Due ( data : ĠByteArray ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr s Ġ= Ġget Date Info From Date ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( strs Ġ!= Ġnull Ġ&& Ġstr s . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsave Time Str Ġ= Ġstr s [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( save Time Str . startsWith (" 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Time Str Ġ= Ġsave Time Str ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring ( 1 , Ġsave Time Str . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsave Time Ġ= Ġjava . lang . Long . valueOf ( save Time Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete After Ġ= Ġjava . lang . Long . valueOf ( strs [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ> Ġsave Time Ġ+ Ġdelete After Ġ* Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġnew String With Date Info ( second : ĠInt , Ġstr Info : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Date Info ( second ) Ġ+ Ġstr Info ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġnew ByteArray With Date Info ( second : ĠInt , Ġdata 2 : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata 1 Ġ= Ġcreate Date Info ( second ). toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret data Ġ= ĠByteArray ( data 1 . size Ġ+ Ġdata 2 . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( data 1 , Ġ 0 , Ġret data , Ġ 0 , Ġdata 1 . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( data 2 , Ġ 0 , Ġret data , Ġdata 1 . size , Ġdata 2 . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret data ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġclear Date Info ( str Info : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstr Info Ġ= Ġstr Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( str Info Ġ!= Ġnull Ġ&& Ġhas Date Info ( str Info . toByteArray ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġca : Char = ĠChar . MIN _ SUR RO GATE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Info Ġ= Ġstr Info . substring ( str Info . indexOf ( ca , m Separator . toInt ()) Ġ+ Ġ 1 , Ġstr Info . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Info ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġclear Date Info ( data : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( has Date Info ( data )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Of Range ( data , ĠindexOf ( data , Ġm Separator ) Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġhas Date Info ( data : ĠByteArray ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( data Ġ!= Ġnull Ġ&& Ġdata . size Ġ> Ġ 1 5 Ġ&& Ġdata [ 1 3 ] Ġ== Ġ'- '. to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠindexOf ( data , Ġm Separator ) Ġ> Ġ 1 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġget Date Info From Date ( data : ĠByteArray ): ĠArray < String >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Date Info ( data )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsave Date Ġ= ĠString ( copyOf Range ( data , Ġ 0 , Ġ 1 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete After Ġ= ĠString ( copyOf Range ( data , Ġ 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf ( data , Ġm Separator ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( save Date , Ġdelete After ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun ĠindexOf ( data : ĠByteArray , Ġc : ĠChar ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdata . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ i ] Ġ== Ġc . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġcopy Of Range ( original : ĠByteArray , Ġfrom : ĠInt , Ġto : ĠInt ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Length Ġ= Ġto Ġ- Ġfrom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Length Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( from . toString () Ġ+ Ġ" Ġ> Ġ" Ġ+ Ġto ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcopy Ġ= ĠByteArray ( new Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( original , Ġfrom , Ġcopy , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . min ( original . size Ġ- Ġfrom , Ġnew Length )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcopy ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġfun Ġcreate Date Info ( second : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠcurrentTime Ġ= ĠSystem . currentTimeMillis (). toString () Ġ+ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( currentTime . length Ġ< Ġ 1 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentTime Ġ= Ġ" 0 $ currentTime " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ currentTime -$ second $ m Separator " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* Ċĉĉ Ġ* ĠBitmap ĠâĨĴ Ġbyte [] Ċĉĉ Ġ*/ ĊĠĠĠĠĠĠĠĠ Ġfun ĠBitmap 2 Bytes ( bm : ĠBitmap ?): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bm Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbm . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , Ġba os ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġba os . toByteArray () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* Ċĉĉ Ġ* Ġbyte [] ĠâĨĴ ĠBitmap Ċĉĉ Ġ*/ ĊĠĠĠĠĠĠĠĠ Ġfun ĠBytes 2 B imap ( b : ĠByteArray ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( b . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠBitmap Factory . decode ByteArray ( b , Ġ 0 , Ġb . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* Ċĉĉ Ġ* ĠDrawable ĠâĨĴ ĠBitmap Ċĉĉ Ġ*/ ĊĠĠĠĠĠĠĠĠ Ġfun Ġdrawable 2 Bitmap ( drawable : ĠDrawable ?): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åıĸ Ġdrawable ĠçļĦ éķ¿ å®½ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġdrawable . intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġdrawable . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åıĸ Ġdrawable ĠçļĦ é¢ľèī² æł¼å¼ı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġif Ġ( drawable . opacity Ġ!= ĠPixel Format . OP A QUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . RGB _ 5 6 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å»ºç«ĭ å¯¹åºĶ Ġbitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( w , Ġh , Ġconfig ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å»ºç«ĭ å¯¹åºĶ Ġbitmap ĠçļĦ çĶ» å¸ĥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġw , Ġh ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠæĬ Ĭ Ġdrawable Ġ åĨħå®¹ çĶ» åĪ° çĶ» å¸ĥ ä¸Ń ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* Ċĉĉ Ġ* ĠBitmap ĠâĨĴ ĠDrawable Ċĉĉ Ġ*/ ĊĠĠĠĠĠĠĠĠ Ġfun Ġbitmap 2 Drawable ( bm : ĠBitmap ?): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( bm Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠBitmap Drawable ( bm ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTIME _ HOUR Ġ= Ġ 6 0 Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval ĠTIME _ DAY Ġ= ĠTIME _ HOUR Ġ* Ġ 2 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMAX _ SIZE Ġ= Ġ 1 0 0 0 Ġ* Ġ 1 0 0 0 Ġ* Ġ 5 0 Ġ// Ġ 5 0 Ġmb ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMAX _ COUNT Ġ= ĠInteger . MAX _ VALUE Ġ// Ġä¸į éĻĲåĪ¶ åŃĺ æĶ¾ æķ°æį®çļĦ æķ°éĩı ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Instance Map Ġ= ĠHashMap < String , ĠA Cache >() ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġget ( ctx : ĠContext , Ġcache Name : ĠString Ġ= Ġ" AC ache "): ĠA Cache Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠFile ( ctx . cacheDir , Ġcache Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget ( f , ĠMAX _ SIZE . to Long (), ĠMAX _ COUNT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġget ( ctx : ĠContext , Ġmax _ z ise : ĠLong , Ġmax _ count : ĠInt ): ĠA Cache Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠFile ( ctx . cacheDir , Ġ" AC ache ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget ( f , Ġmax _ z ise , Ġmax _ count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġget ( cacheDir : ĠFile , Ġmax _ z ise : ĠLong Ġ= ĠMAX _ SIZE . to Long (), Ġmax _ count : ĠInt Ġ= ĠMAX _ COUNT ): ĠA Cache Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmanager : ĠA Cache ? Ġ= Ġm Instance Map [ cacheDir . absolute File . toString () Ġ+ Ġmy Pid ()] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( manager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager Ġ= ĠA Cache ( cacheDir , Ġmax _ z ise , Ġmax _ count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Instance Map [ cacheDir . absolute Path Ġ+ Ġmy Pid ()] Ġ= Ġmanager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmanager ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmy Pid (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"_" Ġ+ Ġandroid . os . Process . my Pid () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }// Ġ================================= ====== Ċ // Ġ= ============ Ġ åºıåĪĹåĮĸ Ġæķ°æį® Ġ è¯» åĨĻ Ġ= ============== Ċ // Ġ================================= ====== Ċ /** Ċ Ġ* Ġ ä¿ĿåŃĺ ĠSerializable æķ°æį® Ġ åĪ° Ġ ç¼ĵåŃĺ ä¸Ń Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey Ċ Ġ* Ġ ä¿ĿåŃĺ çļĦ key Ċ Ġ* Ġ@ param Ġvalue Ċ Ġ* Ġ ä¿ĿåŃĺ çļĦ value Ċ Ġ*/