gpt4 book ai didi

java - Android SurfaceView BitmapFactory 内存不足异常

转载 作者:行者123 更新时间:2023-12-01 15:31:50 25 4
gpt4 key购买 nike

我遇到了一个非常有趣的情况。我可以使用两台设备,其中一台是最顶级的 Android 设备之一(Galaxy Note),另一台是体面的小型 HTC Inspire。现在,由于这两种设备的差异,我注意到 Galaxy Note 可以很好地加载我的应用程序,但 Inspire 返回内存不足异常。堆栈跟踪表明它是我的代码中的位图。我有 5 个非常高分辨率的位图(如 1280 x 800)。我在 SurfaceView 的构造函数中初始化它们中的每一个。我知道这是一个愚蠢的想法,但我的 Note 能够处理负载。然而,较差的设备无法处理所有位图数据。我该如何解决我的问题?我可以降低分辨率,但这是最后的手段。这是与我的代码类似的代码:

static public class GraphicsView extends SurfaceView implements Runnable {

Thread t;
SurfaceHolder holder;
boolean sentinel = false;
Bitmap b1, b2, b3, b4, b5;

public GraphicsView(Context context) {
super(context);
holder = getHolder();
b1 = BitmapFactory.decodeResource(getResources(), R.drawable.i);
b2 = BitmapFactory.decodeResource(getResources(), R.drawable.like);
b3 = BitmapFactory.decodeResource(getResources(), R.drawable.csharp);
b4 = BitmapFactory.decodeResource(getResources(), R.drawable.python_and);
b5 = BitmapFactory.decodeResource(getResources(), R.drawable.java);
/**
*
* This is where the exceptions come!
*
**/
}

public void run() {
while (sentinel) {
if(!holder.getSurface().isValid()) {
continue;
}
try {
Canvas canvas = holder.lockCanvas();
//Drawing commands go here...ommited. These commands may use any of the 5 bitmaps
holder.unlockCanvasAndPost(canvas);
}catch(Exception e) {
//Excpetion handling...its not getting here anyways
}
}
}
//More code below...Ommited...
}

最佳答案

我的解决方案是 Bitmap.createScaledBitmap(b1, width, height, true);

关于java - Android SurfaceView BitmapFactory 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com