使用方法: RecycleBitmap.recycleImageView(mSelectorView); 参数为imageview
/**
* 回收ImageView占用的图像内存; * 使用了本方法之后,记得用一下 * System.gc(); 提醒系统及时回收* @param view
* 在setImageResource()方法前面还没有bitmap,图片可以出来。* 在其后面执行本方法的话,图片就不会显示出来。* 在setImageBitmap()方法的前面还没有bitmap,图片可以出来。* 在其后面执行本方法的话,图片就不会显示出来。* 最好在onDestroy方法中执行本方法*/public static void recycleImageView(View view){ if(view==null) return; if(view instanceof ImageView){ Drawable drawable=((ImageView) view).getDrawable(); if(drawable instanceof BitmapDrawable){ Bitmap bmp = ((BitmapDrawable)drawable).getBitmap(); if (bmp != null && !bmp.isRecycled()){ ((ImageView) view).setImageBitmap(null); bmp.recycle(); log("have recycled ImageView Bitmap"); bmp=null; } } } }
使用方法: RecycleBitmap.recycleBitmap(mNo_shop1Bitmap); 参数为bitmap
/**
* 可以释放到Bitmap在C层申请的内存,recycle方法会把一些相关的引用计数置0. * 回收Bitmap占用的图像内存; * 使用了本方法之后,记得用一下 * System.gc(); 提醒系统及时回收 * @param bitmap * 在setImageBitmap()方法的前面和后面都会报异常,最好在onDestroy方法中执行 * RuntimeException:trying to use a recycled bitmap android.graphics.Bitmap@41c124e8 */public static void recycleBitmap(Bitmap bitmap){ if(bitmap!=null&&!bitmap.isRecycled()){ bitmap.recycle() ; //回收图片所占的内存 log("have recycled Bitmap"); bitmap=null; } }
/**
* 回收List<Drawable>中的drawable */private void recycleDrawable(ListlistDrawable) { if(listDrawable==null){ return; } BitmapDrawable bd; Bitmap bitmap; for(Drawable drawable:listDrawable){ if(drawable!=null){ bd = (BitmapDrawable) drawable; bitmap =bd.getBitmap(); if(bitmap!=null&&!bitmap.isRecycled()){ bitmap.recycle() ; //回收图片所占的内存 log("have recycled Bitmap"); bitmap=null; } } } listDrawable.clear();//它清空了,外面的集合也会清空 listDrawable=null;//它等于null,外面的集合不等于null
}