Android LruCache内存缓存图片
程序员文章站
2022-06-19 10:57:16
...
1,实现效果
-
软引用,进行内存缓存,在版本更改后,软引用4.0以后很快会被回收,没有起到缓存的效果
2,实现逻辑
-
LruCache需要分配一些内存空间,一般是最大内存的/8
package com.xiaoshaui.zhbj96.utils.pic;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
public class MemCacheUtils {
LruCache<String, Bitmap> mLruCache;// 存图片
public MemCacheUtils() {
super();
long maxMemory = Runtime.getRuntime().maxMemory();// 当前进程的最大缓存
// Runtime.getRuntime().totalMemory();//当前申请的内存大小
// Runtime.getRuntime().freeMemory();//当前申请的内存 剩余的
// 参1 给缓存分配内存 一般总内存的/8
mLruCache = new LruCache<String, Bitmap>((int) (maxMemory / 8)) {
@Override
protected int sizeOf(String key, Bitmap value) {
int byteCount = value.getByteCount();
System.out.println("byteCount=" + byteCount);
// int byteCount = value.getRowBytes() * value.getHeight();
return byteCount;
}
};
}
public void setCache(String url, Bitmap bimBitmap) {
mLruCache.put(url, bimBitmap);
}
public Bitmap getCache(String url) {
Bitmap bitmap = null;
bitmap = mLruCache.get(url);
return bitmap;
}
}