android-getting错误内存与显示图像

时间:2014-05-03 10:48:55

标签: android memory imageview

我每次用户运行应用时都会显示图像。图像在drawable文件夹中。 应用程序崩溃和lof cat中经常出现java.lang.outOfMemmoryError

我有很多图片,大概有100张图片。 100,000 Byet。

显示这些图像以避免使用大量内存的解决方案是什么?

非常感谢

1 个答案:

答案 0 :(得分:0)

要修复OutOfMemory,你应该做类似的事情:

BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap preview_bitmap=BitmapFactory.decodeStream(is,null,options);

此inSampleSize选项可减少内存消耗。

这是一个完整的方法。首先,它读取图像大小而不解码内容本身。然后它找到最好的inSampleSize值,它应该是2的幂。最后图像被解码。

private Bitmap decodeFile(File f){
try {
    //Decode image size
    BitmapFactory.Options o = new BitmapFactory.Options();
    o.inJustDecodeBounds = true;
    BitmapFactory.decodeStream(new FileInputStream(f),null,o);

    //The new size we want to scale to
    final int REQUIRED_SIZE=70;

    //Find the correct scale value. It should be the power of 2.
    int scale=1;
    while(o.outWidth/scale/2>=REQUIRED_SIZE && o.outHeight/scale/2>=REQUIRED_SIZE)
        scale*=2;

    //Decode with inSampleSize
    BitmapFactory.Options o2 = new BitmapFactory.Options();
    o2.inSampleSize=scale;
    return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
    } catch (FileNotFoundException e) {}
 return null;
}
相关问题