【问题标题】:how should i avoid out of memory error?我应该如何避免内存不足错误?
【发布时间】:2014-06-16 15:54:28
【问题描述】:

在加载帧动画时,我在 android 中遇到了可怕的 oom 错误,我的 hdpi、mdpi 和 xhdpi 文件夹中有所有相应的图像,但是在加载每个动画几次后应用程序会崩溃。 我的设置是一个带有 4 个图像按钮的活动,每个图像按钮将用户带到具有不同动画的不同活动,我让 android 后退按钮负责返回到 4 个图像按钮,这很有效,每个动画都会显示很好,但是如果我打开一个,然后按回然后再打开另一个,最终(在打开每个两次并按回关闭它们之后)应用程序因 oom 而崩溃,我对此进行了很多搜索,我认为我的图像不在错误最大的动画是 17 张幻灯片,240x408 的 mdpi 和 1.5 倍的 hdpi,我猜它像垃圾收集器没有被调用或调用不够快,但我读过你应该' t 明确调用它,我的动画也不在任何线程中,因为我读取帧动画应该在 ui 线程上,所以我的问题是如何避免这种内存不足错误?

【问题讨论】:

  • 听起来你在应用程序中的某个地方挂着引用(尽管我个人会尽量避免多次加载相同的资源)
  • 在 hprof 之类的内存分析器中运行您的应用程序并查找泄漏。

标签: android animation out-of-memory


【解决方案1】:

一些提示:

  • 检查 logcat 中的 GC 错误消息以了解有关 OOM 异常的更多信息。

  • 确保正确回收所有图像(当您不再需要位图对象时,请在位图对象上调用recycle())。

  • 使用heap profiling 查明您是否有意外的对象保留(内存泄漏)。

  • 您可以通过将android:largeHeap="true" 添加到AndroidManifest.xml 的<application> 标记来为应用提供更多堆。这适用于 Android 3.0 及更高版本。它在早期的 Android 版本中被忽略。

【讨论】:

    【解决方案2】:

    对我来说听起来像是内存泄漏 - 请阅读http://android-developers.blogspot.de/2011/03/memory-analysis-for-android.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 2017-11-19
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2023-03-18
      • 2013-10-04
      相关资源
      最近更新 更多