如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。
在一个界面如果有很多的图片需要显示,必然会加快内存的消耗,通过软引用可以很好的控制着一点。
1.软引用图片对象的类
public class SoftRefBitmap extends SoftReference<Bitmap> {
public SoftRefBitmap(Bitmap r) {
super(r);
}
}
2.定义一个map对象
private Map<Integer, SoftRefBitmap> mBitmapMap;
mBitmapMap = new HashMap<>();
3.把图片添加到内存中
mBitmapMap.put(postion, new SoftRefBitmap(resultBM));
4.显示图片
Set set = mBitmapMap.keySet();
Iterator iter = set.iterator();
while (iter.hasNext()) {
int key = (int) iter.next();
if (key == position - 1) {
SoftRefBitmap bitmap = mBitmapMap.get(key);
if (bitmap != null) {
imageView.setImageBitmap(bitmap.get());
return;
}
}
}
5.删除缓存
mBitmapMap.clear();