Android内存不足错误 - 位图太大了

时间:2011-05-25 00:55:58

标签: android bitmap heap memory-management

在我的游戏中,我有一个位图图像,用作游戏背景(在画布上绘制)。图像越大,游戏中的“空间”越多,用户就可以移入,所以我希望位图尽可能大,而不会造成内存问题。

好吧,我过火了,画了一个巨大的位图,在初始化时立即导致内存不足错误,所以我稍微缩小了位图。但我觉得它太小了。我的问题是如何衡量所用内存的“安全”限制?

我使用了以下方法并在CatLog中读取输出:

Debug.getNativeHeapAllocatedSize();
Log.v("MEMORY",String.valueOf(Debug.getNativeHeapAllocatedSize()) );                    
Log.v("FreeMEMORY",String.valueOf(Debug.getNativeHeapFreeSize ()) );

结果是:

 05-25 09:53:54.044: VERBOSE/MEMORY(23044): 9715624

 05-25 09:53:54.044: VERBOSE/FreeMEMORY(23044): 61528

免费记忆似乎很小?这种切割是否接近骨骼?

2 个答案:

答案 0 :(得分:1)

使用采样来重新调整图像大小,并将图像存储在SD卡中的文件中,这样会更好

答案 1 :(得分:1)

如果你正在缩小位图,那么首先它会被加载到内存中并最终给你错误。

您需要使用名为BitmapFactory.Options的内容,在加载位图之前进行预先调整。

Refere to this question's maximum voted answer.