Android Studio 内存不足错误

Out Of Memory Error in Android Studio

我正在尝试创建我的第一个 android 应用程序,所以我对 android 开发真的很陌生。我正在尝试为我的应用制作精美的背景图片。我制作了一张与设备尺寸完全相同的图像,但是当我尝试加载它时,出现错误 "Failed to allocate a 218748 byte allocation with 217220 free bytes and 212KB until OOM" 这是我的代码:

@Override
protected void onDraw(Canvas canvas) {
    drawBackground(canvas);

protected void drawBackground(Canvas canvas) {
    Bitmap background = Bitmap.createBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.background2));
    canvas.drawBitmap(background, 0, 0, null);

我试过缩小它,效果很好,但它并没有填满整个屏幕。我该如何解决这个问题?

你应该在canvas.drawBitmap(background, 0, 0, null);之后回收位图,或者在构造函数中创建一次位图,然后使用它,每次在onDraw方法中创建位图的成本非常高,甚至创建简单的成本也很高onDraw 中的对象,你应该避免它,android:largeHeap="true"System.gc() 在这种情况下无能为力。读这个 Custom Drawing

Creating objects ahead of time is an important optimization. Views are redrawn very frequently, and many drawing objects require expensive initialization. Creating drawing objects within your onDraw() method significantly reduces performance and can make your UI appear sluggish.

有博客可以帮助您检测和防止内存不足问题。我根据我遇到的一个实际问题写了这篇文章,这里是 link

如果您在教程中遇到任何问题,请告诉我我们可以讨论,如果您想添加一些内容,请提出建议。