android - OutOfMemoryError - 使用位图破坏堆大小

标签 android android-memory

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

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


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

然后我再次执行此操作,相同的功能,但针对不同的位置,使用不同的图像。

这样做几次后,所有这些正在加载的图像似乎都保留在内存中,堵塞了它,导致错误。尽量保持简单,我应该在将这些不同的图像加载到我的布局背景之间执行哪些步骤以防止出现此问题?

最佳答案

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

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

关于android - OutOfMemoryError - 使用位图破坏堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27110869/

相关文章:

android - 在这种情况下,用户可以清除共享首选项但不能清除数据库

android - 在 Android 中写入 ByteArrayOutputStream 时出现内存不足错误

android - 当我的应用程序启动时,发生强制关闭错误

java - 如何在 Java 中为多个组合使用复选框的开关?

java - Android平台如何开启SSL调试?

android - 在 Internet 不可用时在 ListView 中重复使用图像和文本

android - 允许在 Android Drawables 中针对各种密度进行自动缩放吗?

android - 方向更改后, fragment 对 mActivity 的引用变为空。无效的 fragment 状态维护

java - TableLayout 中的 ImageView

java - 如何退出全屏后重新显示状态栏+导航栏出现后不会消失