大家好我正在开发动态壁纸,我正在使用很多位图。我已经测试了我的新动态壁纸一周了,它已经完美运行了,但是一旦我将它上传到市场我就会遇到这种例外:java.lang.OutOfMemoryError
对于android.graphics.Bitmap.nativeCreate
}和android.graphics.BitmapFactory.nativeDecodeAsset
。我使用这种位图的生命周期:
我创建了一个像:
的引用Bitmap dark = null;
Bitmap cave = null;
在onCreateEngine
我按照以下方式开始:
cave = BitmapFactory.decodeResource(getResources(), R.drawable.cave);
dark = BitmapFactory.decodeResource(getResources(), R.drawable.dark);
这里是它的例外。对于这些图片:
。毕竟我把它们画成这样的画布:
canvas.save();
canvas.drawBitmap(bg, new Matrix(), new Paint());
canvas.drawBitmap(dark, new Matrix(), new Paint());
canvas.restore();
我该怎么办?最好只将一张图片加载到暗图像并将其绘制到画布宽度*高度时间?或者有什么方法可以做吗?我想recycle
或致电onDestroy
。但是我不知道何时打电话给他们,因为onCreate
会抛出异常。图像太大了吗?为什么它在我的设备上顺利运行,而在其他设备上它会抛出异常?位图是1484 * 1484维大,云是250 * 172维大,它们是否应该在2 ^ x * 2 ^ x维度?
答案 0 :(得分:1)
尝试使用Memory Optimizer,看看你在哪里创建内存泄漏。您可以使用Eclipse Memory Analyzer(MAT)进行此操作。这是使用位图的一个非常常见的问题。通过使用BitMaps,您需要特别注意内存泄漏。