背景图片减慢了Android应用程序

时间:2011-04-10 22:46:38

标签: java android performance image background

我是开发Android应用程序的新手。我正在制作一个简单对象移动的应用程序。问题在于背景。当我把这样的代码放在:

protected void onDraw(Canvas canvas) {
    BackGround1 = BitmapFactory.decodeResource(getResources(), R.drawable.lightning1);
    canvas.drawBitmap(BackGround1, 0, 0, null);
    canvas.drawCircle(xp, yp, circleRadius, circlePaint);
}

移动物体(圆圈)明显减慢,一段时间后(如20秒)开始出现圆形痕迹,然后(~10秒)它“崩溃”并返回上一个活动。

如果我把
canvas.drawColor(Color.BLACK);
而不是 canvas.drawBitmap(BackGround1, 0, 0, null);然后一切正常。 lightning1是480x800 jpg图像   谁能告诉我我做错了什么?

04-11 02:00:50.722: ERROR/dalvikvm-gc(13262): Could not create 1097728-byte ashmem mark stack: Too many open files
04-11 02:00:50.722: ERROR/dalvikvm-heap(13262): dvmHeapBeginMarkStep failed; aborting
04-11 02:00:50.722: ERROR/dalvikvm(13262): VM aborting
04-11 02:00:50.902: ERROR/ActivityManager(92): fail to set top app changed!

1 个答案:

答案 0 :(得分:2)

每次绘制曲面时,您都在解码资源。这创建了许多新的Bitmap对象,而Android有足够的工作来运行垃圾收集器来清理它。

您可能只想加载资源一次,并将其存储在字段中。

从更一般的意义上讲,您可以随时查看Logcat以找出导致力量关闭的原因。我假设你得到OutOfMemoryException

相关问题