大家好,我正在开发动态壁纸,并且正在使用很多位图。我已经对我的新动态壁纸进行了大约一周的测试,它可以完美运行,但是一旦我将它上传到市场,我就会不断收到这种异常: 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 尺寸吗?