日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android提供的LruCache类简介

發布時間:2025/3/20 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android提供的LruCache类简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分類: Android開發
  • package?android.util; ?
  • import import /**?
  • ?*?A?cache?that?holds?strong?references?to?a?limited?number?of?values.?Each?time?
  • ?*?a?value?is?accessed,?it?is?moved?to?the?head?of?a?queue.?When?a?value?is?
  • ?*?added?to?a?full?cache,?the?value?at?the?end?of?that?queue?is?evicted?and?may?
  • ?*?become?eligible?for?garbage?collection.?
  • ?*?Cache保存一個強引用來限制內容數量,每當Item被訪問的時候,此Item就會移動到隊列的頭部。
  • ?*?<p>If?your?cached?values?hold?resources?that?need?to?be?explicitly?released,?
  • ?*?override?{@link?#entryRemoved}.?
  • ?*?如果你cache的某個值需要明確釋放,重寫entryRemoved()
  • ?*?<p>If?a?cache?miss?should?be?computed?on?demand?for?the?corresponding?keys,?
  • ?*?override?{@link?#create}.?This?simplifies?the?calling?code,?allowing?it?to?
  • ?*?assume?a?value?will?always?be?returned,?even?when?there's?a?cache?miss.?
  • ?*?如果key相對應的item丟掉啦,重寫create().這簡化了調用代碼,即使丟失了也總會返回。
  • ?*?<p>By?default,?the?cache?size?is?measured?in?the?number?of?entries.?Override?
  • ?*?{@link?#sizeOf}?to?size?the?cache?in?different?units.?For?example,?this?cache?
  • ?*?is?limited?to?4MiB?of?bitmaps:?默認cache大小是測量的item的數量,重寫sizeof計算不同item的
  • ?*?<pre>???{@code?
  • ?*???int?cacheSize?=?4?*?1024?*?1024;?//?4MiB?
  • ?*???LruCache<String,?Bitmap>?bitmapCache?=?new?LruCache<String,?Bitmap>(cacheSize)?{?
  • ?*???????protected?int?sizeOf(String?key,?Bitmap?value)?{?
  • ?*???????????return?value.getByteCount();?
  • ?*???????}?
  • ?*???}}</pre>?
  • ?*?
  • ?*?<p>This?class?is?thread-safe.?Perform?multiple?cache?operations?atomically?by?
  • ?*?synchronizing?on?the?cache:?<pre>???{@code?
  • ?*???synchronized?(cache)?{?
  • ?*?????if?(cache.get(key)?==?null)?{?
  • ?*?????????cache.put(key,?value);?
  • ?*?????}?
  • ?*???}}</pre>?
  • ?*?
  • ?*?<p>This?class?does?not?allow?null?to?be?used?as?a?key?or?value.?A?return?
  • ?*?value?of?null?from?{@link?#get},?{@link?#put}?or?{@link?#remove}?is?
  • ?*?unambiguous:?the?key?was?not?in?the?cache.
  • ?*/ publicclass privatefinal ??
  • privateint?size; //已經存儲的大小
  • privateint?maxSize; //規定的最大存儲空間
  • privateint?putCount; ?//put的次數
  • privateint?createCount; ?//create的次數
  • privateint?evictionCount; ?//回收的次數
  • privateint?hitCount; ?//命中的次數
  • privateint?missCount; ?//丟失的次數
  • ?????*?@param?maxSize?for?caches?that?do?not?override?{@link?#sizeOf},?this?is?
  • ?????*?????the?maximum?number?of?entries?in?the?cache.?For?all?other?caches,?
  • ?????*?????this?is?the?maximum?sum?of?the?sizes?of?the?entries?in?this?cache.?
  • ?????*/ publicint if)?{??
  • thrownew this thisnew,?.75f,?true ?????*?Returns?the?value?for?{@code?key}?if?it?exists?in?the?cache?or?can?be?
  • ?????*?created?by?{@code?#create}.?If?a?value?was?returned,?it?is?moved?to?the?
  • ?????*?head?of?the?queue.?This?returns?null?if?a?value?is?not?cached?and?cannot?
  • ?????*?be?created.?通過key返回相應的item,或者創建返回相應的item。相應的item會移動到隊列的頭部,
  • ?????*/ publicfinal ifnull thrownew synchronizedthis ifnull return ?????????*?Attempt?to?create?a?value.?This?may?take?a?long?time,?and?the?map?
  • ?????????*?may?be?different?when?create()?returns.?If?a?conflicting?value?was?
  • ?????????*?added?to?the?map?while?create()?was?working,?we?leave?that?value?in?
  • ?????????*?the?map?and?release?the?created?value.?
  • ?????????* 如果丟失了就試圖創建一個item
  • ? ? ? ? ?*/ ifnull returnnull synchronizedthis ifnull ??
  • ? ? ? ? ? ? ? ? //如果前面存在oldValue,那么撤銷put()?
  • else ifnull false return else return ?????*?Caches?{@code?value}?for?{@code?key}.?The?value?is?moved?to?the?head?of?
  • ?????*?the?queue.?
  • ?????*?
  • ?????*?@return?the?previous?value?mapped?by?{@code?key}.?
  • ?????*/ publicfinal ifnullnull thrownew synchronizedthis ifnull)?{ ?//返回的先前的value值
  • ifnull false return ?????*?@param?maxSize?the?maximum?size?of?the?cache?before?returning.?May?be?-1?
  • ?????*?????to?evict?even?0-sized?elements.?
  • ?????*/ privatevoidint whiletrue synchronizedthis if?||?(map.isEmpty()?&&?size?!=?))?{??
  • thrownew if break ifnull break truenull ?????*?Removes?the?entry?for?{@code?key}?if?it?exists.?
  • ?????*?刪除key相應的cache項,返回相應的value
  • ?????*?@return?the?previous?value?mapped?by?{@code?key}.?
  • ?????*/ publicfinal ifnull thrownew synchronizedthis ifnull ifnull falsenull return ?????*?Called?for?entries?that?have?been?evicted?or?removed.?This?method?is?
  • ?????*?invoked?when?a?value?is?evicted?to?make?space,?removed?by?a?call?to?
  • ?????*?{@link?#remove},?or?replaced?by?a?call?to?{@link?#put}.?The?default?
  • ?????*?implementation?does?nothing.?
  • ?????*?當item被回收或者刪掉時調用。改方法當value被回收釋放存儲空間時被remove調用,
  • ?????*?<p>The?method?is?called?without?synchronization:?other?threads?may?
  • ?????*?access?the?cache?while?this?method?is?executing.?
  • ?????*?
  • ?????*?@param?evicted?true?if?the?entry?is?being?removed?to?make?space,?false?
  • ?????*?????if?the?removal?was?caused?by?a?{@link?#put}?or?{@link?#remove}.?
  • ?????*?@param?newValue?the?new?value?for?{@code?key},?if?it?exists.?If?non-null,?
  • ?????*?????this?removal?was?caused?by?a?{@link?#put}.?Otherwise?it?was?caused?by?
  • ?????*?????an?eviction?or?a?{@link?#remove}.?
  • ?????*/ protectedvoidboolean ?????*?Called?after?a?cache?miss?to?compute?a?value?for?the?corresponding?key.?
  • ?????*?Returns?the?computed?value?or?null?if?no?value?can?be?computed.?The?
  • ?????*?default?implementation?returns?null.?
  • ?????*?當某Item丟失時會調用到,返回計算的相應的value或者null
  • ?????*?<p>The?method?is?called?without?synchronization:?other?threads?may?
  • ?????*?access?the?cache?while?this?method?is?executing.?
  • ?????*?
  • ?????*?<p>If?a?value?for?{@code?key}?exists?in?the?cache?when?this?method?
  • ?????*?returns,?the?created?value?will?be?released?with?{@link?#entryRemoved}?
  • ?????*?and?discarded.?This?can?occur?when?multiple?threads?request?the?same?key?
  • ?????*?at?the?same?time?(causing?multiple?values?to?be?created),?or?when?one?
  • ?????*?thread?calls?{@link?#put}?while?another?is?creating?a?value?for?the?same?
  • ?????*?key.?
  • ?????*/ protected returnnull privateint int if)?{??
  • thrownew?+?value);??
  • return ?????*?Returns?the?size?of?the?entry?for?{@code?key}?and?{@code?value}?in?
  • ?????*?user-defined?units.??The?default?implementation?returns?1?so?that?size?
  • ?????*?is?the?number?of?entries?and?max?size?is?the?maximum?number?of?entries.?
  • ?????*?返回用戶定義的item的大小,默認返回1代表item的數量,最大size就是最大item值
  • ?????*?<p>An?entry's?size?must?not?change?while?it?is?in?the?cache.?
  • ?????*/ protectedint return;??
  • ?????*?Clear?the?cache,?calling?{@link?#entryRemoved}?on?each?removed?entry.?
  • ?????*/ publicfinalvoid );???
  • ?????*?For?caches?that?do?not?override?{@link?#sizeOf},?this?returns?the?number?
  • ?????*?of?entries?in?the?cache.?For?all?other?caches,?this?returns?the?sum?of?
  • ?????*?the?sizes?of?the?entries?in?this?cache.?
  • ?????*/ publicsynchronizedfinalint return ?????*?For?caches?that?do?not?override?{@link?#sizeOf},?this?returns?the?maximum?
  • ?????*?number?of?entries?in?the?cache.?For?all?other?caches,?this?returns?the?
  • ?????*?maximum?sum?of?the?sizes?of?the?entries?in?this?cache.?
  • ?????*/ publicsynchronizedfinalint return ?????*?Returns?the?number?of?times?{@link?#get}?returned?a?value?that?was?
  • ?????*?already?present?in?the?cache.?
  • ?????*/ publicsynchronizedfinalint return ?????*?Returns?the?number?of?times?{@link?#get}?returned?null?or?required?a?new?
  • ?????*?value?to?be?created.?
  • ?????*/ publicsynchronizedfinalint return ?????*?Returns?the?number?of?times?{@link?#create(Object)}?returned?a?value.?
  • ?????*/ publicsynchronizedfinalint return ?????*?Returns?the?number?of?times?{@link?#put}?was?called.?
  • ?????*/ publicsynchronizedfinalint return ?????*?Returns?the?number?of?values?that?have?been?evicted.?
  • ?????*/ publicsynchronizedfinalint return ?????*?Returns?a?copy?of?the?current?contents?of?the?cache,?ordered?from?least?
  • ?????*?recently?accessed?to?most?recently?accessed.?返回當前cache的副本,從最近最少訪問到最多訪問
  • ?????*/ publicsynchronizedfinal returnnew ?publicsynchronizedfinal int int???(?*?hitCount?/?accesses)?:?;??
  • return,??
  • }?
  • 轉載于:https://www.cnblogs.com/xgjblog/p/4064806.html

    總結

    以上是生活随笔為你收集整理的Android提供的LruCache类简介的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。