OutOfMemoryError - 使用位图破坏堆大小

时间:2014-11-24 17:40:18

标签: android android-memory

在我的应用程序主屏幕加载几次后,我收到了OutOfMemoryError异常。该应用加载数据和有关位置的背景图像。有几个选项可供选择,在5-6个不同的位置选择之后,堆超过192 MB并且我得到了我的错误。我认为问题在于我使用的位图很糟糕。

我的代码很长而且不清楚,所以我会给出一个例子,希望有人可以帮助我,因为我认为我没有掌握有关图像内存管理的基础知识(我已经阅读了文档并进行了广泛的搜索,我我希望在理想情况下实际上与某人谈论此事。)


我有一个if有5个条件,每个都返回一个不同的图像。 我将图像转换为位图并将其设置为我的主要布局的新可绘制源。

然后我再次这样做,相同的功能,但对于不同的位置,使用不同的图像。

执行此操作几次后,所有正在加载的图像似乎都保留在内存中,并堵塞它,导致错误。试图保持它非常简单,我应该在将这些不同的图像加载到我的布局背景之间实现哪些步骤来防止这个问题?

1 个答案:

答案 0 :(得分:1)

你必须回收位图,你不再使用了。确保您同时拥有非常有限数量的Bitmap实例,并且每次使用位图完成后调用其“recycle()”方法。

您可以在此处找到更多信息:Managing Bitmap Memory& Caching Bitmaps