首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 緩存設計場景與 LruCache 使用指南

     編輯:程式設計疑難解答

何時需要緩存?

  • 圖片加載:列表、畫廊、頭像等重複顯示的圖片,避免重複解碼與網路請求。
  • 網路資料:首頁資訊流、配置資料、用戶資料,減少請求延遲與流量。
  • 計算結果:複雜排序、過濾、聚合結果,避免重複 CPU 密集運算。
  • 資料庫查詢:熱點查詢結果,降低 IO 壓力。

Android 內建方案:LruCache

android.util.LruCache<K, V> 基於 LRU(最近最少使用)演算法,自動淘汰最久未訪問項目,適合記憶體敏感場景。

圖片緩存典型實現

public class BitmapLruCache extends LruCache<String, Bitmap> {
    public BitmapLruCache(int maxSizeKB) {
        super(maxSizeKB * 1024); // 單位:Byte
    }
    @Override
    protected int sizeOf(String key, Bitmap value) {
        return value.getByteCount(); // API 12+ 可用 getAllocationByteCount()
    }
}

// 使用
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
int cacheSize = maxMemory / 8; // 佔 1/8 記憶體
BitmapLruCache cache = new BitmapLruCache(cacheSize);

cache.put(url, bitmap);
Bitmap bm = cache.get(url);

最佳實踐

  • 結合 DiskLruCache 實現兩級緩存(記憶體 + 磁碟)。
  • 使用 Glide、Picasso、Coil 等成熟圖片庫,內部已封裝緩存邏輯。
  • 避免緩存大型物件導致 OOM,及時 recycle() 不再使用的 Bitmap。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved