//有一个叫做LruCache类专门用来做图片缓存处理的。它有一个特点,当缓存的图片达到了预先设定的值的时候,那么近期使用次数最少的图片就会被回收掉。
代码实现(封装过后)
public class PhoneCache {
private LruCachemLru;
private Context mContext;
//得到一个可以管理手机内存操作者的类
ActivityManager manager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
//得到手机内存空间大小,单位是m
int memoryClass = manager.getMemoryClass(); Log.e("memoryClass", memoryClass + "m");
//因为等会我们实例化LRUCache是构造方法里面参数是字节类型所有要吧m转换成b
int maxSize = memoryClass * 1024 * 1024 / 8; Log.e("maxSize", maxSize + "by");
mLru = new LruCache(maxSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
//计算图片的大小
return value.getRowBytes() * value.getHeight();
}
};
}
//存放图片
public void putImage(String url, Bitmap b) {
mLru.put(url, b);
Log.e("存放", "存放成功");
}
//得到图片
public Bitmap getImage(String url) {
return mLru.get(url);
}