OOM:在画布上绘制一个3MB的.png文件

时间:2016-03-26 13:41:30

标签: android

我正在尝试在SurfaceView的画布上绘制一个位图(作为背景)

我试过了:

Drawable bg = ContextCompat.getDrawable(surfaceView.getContext(), R.drawable.bg);
bg.draw(canvas);

然后我尝试了:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = (int) (1600 / width);  //since the width of the image is 1600px
BitmapFactory.decodeResource(surfaceView.getResources(), R.drawable.bg, options);

并且两者都导致相同的OOM异常

java.lang.OutOfMemoryError: Failed to allocate a 147456012 byte allocation
with 1048576 free bytes and 95MB until OOM

我很感激有关如何绘制我的.png图像的帮助,这是3MB(1600 * 2560)

1 个答案:

答案 0 :(得分:0)

好吧,我不知道为什么3MB无法在没有OOM的情况下最初加载到堆上

但是将大堆线添加到Manifest解决了问题

edit configurations

希望它能帮助那些面临同样问题的人:)