首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Bitmap以致的OOM 终极解决方案

2012-08-07 
Bitmap导致的OOM 终极解决方案1 bitmap如果不用了,回收掉protected void onDestroy() {super.onDestroy()

Bitmap导致的OOM 终极解决方案
1 bitmap如果不用了,回收掉

protected void onDestroy() { 
        super.onDestroy(); 
        if(bmp1 != null){ 
            bmp1.recycle(); 
            bmp1 = null; 
        } 
        if(bmp2 != null){ 
            bmp2.recycle(); 
            bmp2 = null; 
        } 
    } 

2 先算出该bitmap的大小,然后通过调节采样率的方式来规避

BitmapFactory.Options opts = new BitmapFactory.Options(); 
        opts.inJustDecodeBounds = true; 
        BitmapFactory.decodeFile(imageFile, opts); 
        opts.inSampleSize = computeSampleSize(opts, minSideLength, maxNumOfPixels); 
        opts.inJustDecodeBounds = false; 
        try { 
            return BitmapFactory.decodeFile(imageFile, opts); 
        } catch (OutOfMemoryError err) { 
        } 
        return null; 

3 在进行文件传输时,最好采用压缩的方式变成byte[]再传输

public static byte[] bitmap2Bytes(Bitmap bm) { 
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        bm.compress(Bitmap.CompressFormat.JPEG, 90, baos); 
        return baos.toByteArray(); 
    } 

热点排行