Java中的SoftReference
即對象的軟引用。如果一個對象具有軟引用,記憶體空間足夠,記憶體回收行程就不會回收它;如果記憶體空間不足了,就會回收這些對象的記憶體。只要記憶體回收行程沒有回收它,該對象就可以被程式使用。軟引用可用來實現記憶體敏感的快取。使用軟引用能防止記憶體泄露,增強程式的健壯性。
SoftReference的特點是它的一個執行個體儲存對一個Java對象的軟引用,該軟引用的存在不妨礙垃圾收集線程對該Java對象的回收。也就是說,一旦SoftReference儲存了對一個Java對象的軟引用後,在垃圾線程對這個Java對象回收前,SoftReference類所提供的get()方法返回Java對象的強引用。另外,一旦垃圾線程回收該Java對象之後,get()方法將返回null
用Map集合緩衝軟引用的Bitmap對象
Map<String, SoftReference<Bitmap>> imageCache = new new HashMap<String, SoftReference<Bitmap>>();
//強引用的Bitmap對象
Bitmap bitmap = BitmapFactory.decodeStream(InputStream);
//軟引用的Bitmap對象
SoftReference<Bitmap> bitmapcache = new SoftReference<Bitmap>(bitmap);
//添加該對象到Map中使其緩衝
imageCache.put("1",softRbitmap);
..
.
//從緩衝中取軟引用的Bitmap對象
SoftReference<Bitmap> bitmapcache_ = imageCache.get("1");
//取出Bitmap對象,如果由於記憶體不足Bitmap被回收,將取得空
Bitmap bitmap_ = bitmapcache_.get();
如果程式中需要從網上載入大量的圖片 這時就考慮採用在sdcard上建立臨時檔案夾緩衝這些圖片了