设为首页 加入收藏

TOP

回收ImageView占用的图像内存
2017-10-12 17:57:28 】 浏览:7399
Tags:回收 ImageView 占用 图像 内存

 

使用方法: 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(List<Drawable> listDrawable) {
        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
 }

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇美女的秘密项目源码 下一篇ImageLoader配合ImageSwitcher的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目