1.1 主動釋放Bitmap資源佈局
+當你肯定這個Bitmap資源不會再被使用的時候(固然這個Bitmap不釋放可能會讓程序下一次啓動或者resume快一些,可是其佔用的內存資源太大,可能致使程序在後臺的時候被殺掉,反而得不償失),咱們建議手動調用recycle()方法,釋放其Native內存: if(bitmap != null && !bitmap.isRecycled()){
bitmap.recycle(); bitmap = null; }xml
1.2 主動釋放ImageView的圖片資源圖片
+因爲咱們在實際開發中,不少狀況是在xml佈局文件中設置ImageView的src或者在代碼中調用ImageView.setImageResource/setImageURI/setImageDrawable等方法設置圖像,下面代碼能夠回收這個ImageView所對應的資源:內存
private static void recycleImageViewBitMap(ImageView imageView) { if (imageView != null) { BitmapDrawable bd = (BitmapDrawable) imageView.getDrawable(); rceycleBitmapDrawable(bd); } }資源
private static void rceycleBitmapDrawable(BitmapDrawable bitmapDrawable) { if (bitmapDrawable != null) { Bitmap bitmap = bitmapDrawable.getBitmap(); rceycleBitmap(bitmap); } bitmapDrawable = null; }開發
private static void rceycleBitmap(Bitmap bitmap) { if (bitmap != null && !bitmap.isRecycled()) { bitmap.recycle(); bitmap = null; } }get
1.3 主動釋放ImageView的背景資源it
+若是你的ImageView是有Background,那麼下面的代碼能夠釋放他: public static void recycleBackgroundBitMap(ImageView view) { if (view != null) { BitmapDrawable bd = (BitmapDrawable) view.getBackground(); rceycleBitmapDrawable(bd); } }後臺
public static void recycleImageViewBitMap(ImageView imageView) { if (imageView != null) { BitmapDrawable bd = (BitmapDrawable) imageView.getDrawable(); rceycleBitmapDrawable(bd); } }map
private static void rceycleBitmapDrawable(BitmapDrawable bitmapDrawable) { if (bitmapDrawable != null) { Bitmap bitmap = bitmapDrawable.getBitmap(); rceycleBitmap(bitmap); } bitmapDrawable = null; }