所以我明白了:
'01-01 20:37:34.859: E/dalvikvm-heap(19921): Out of memory on a 6471856-byte allocation.'
当试图将一堆变量分配给内存时。我正在分配 24 个变量,如下所示:
mElements.add(new ShopElement(getResources(),R.drawable.shop_starter, b1X , b1Y,true,1,"red",true,5,checkLocked(0)));
其中之一:
bNumbers = new Bitmap[] {Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h0)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h1)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h2)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h3)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h4)
,65,65,true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h5)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h6)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h7)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h8)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h9)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.time)
, 50,50, true)};
但在我完成创建的 24 个元素中的第 16 个之前,它在某些手机上崩溃了。
我有一个Galaxy S2,它运行良好,但在S3和其他手机上它崩溃了。
我很乐意应要求提供更多信息。
我之前搜索过此错误,尝试应用解决方案,并查看了“有效显示位图”的内容,但似乎没有任何帮助。
令我头疼的是它适用于 S2,但不适用于 S3。S3不应该在各个方面都超过S2吗?
我正在使用全局 BitmapFactory.Options 来绘制我的所有位图,我将选项设置如下:
Global.opts = new BitmapFactory.Options();
Global.opts.inDither=false;
Global.opts.inPurgeable=true;
Global.opts.inInputShareable=true;
Global.opts.inTempStorage=new byte[16 * 1024];