【问题标题】:Out of memory error when reloading activity several times多次重新加载活动时出现内存不足错误
【发布时间】:2014-05-25 09:20:56
【问题描述】:

我正在开发一个应用程序,它有一个显示应用程序标题的主要活动(两个动画图像视图叠加)、两个动画图片(也叠加)和三个按钮。该活动还有一个背景图片,与其他活动使用的相同。

应用程序从一个活动流向另一个活动,最终,该主要活动再次启动(使用 FLAG_ACTIVITY_CLEAR_TOP)。一切正常,但重新加载几次后,我的 Android 2.1 设备上出现内存不足错误。

一开始我把所有的图片都放在drawable文件夹里,到达main activity 5次后问题就出现了。然后,我调整了位图大小并根据密度将它们放在适当的文件夹中,并且在达到主要活动 14 次后出现问题。现在,我只是出于测试目的删除了背景图像,并且在 20 多次重新启动后出现了内存不足。

另外,如果我按下 Home 按钮然后切换回我的应用程序,问题似乎直到很久以后才会出现。

此外,我在 Nexus 5 中测试了该应用程序,从未发生过内存不足的情况。

所以...这是我手机的问题吗?安卓2.1?

谢谢!

[编辑] 我认为我已经找到了问题,但仍然是奇怪的行为。

例如,在某一时刻,我需要重新创建活动。由于“重新创建”方法不适用于我的最低 API 级别 (7),因此我按以下方式进行操作:

Intent refresh = new Intent(getActivity(), getActivity().getClass());
refresh.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(refresh);  

我认为这是正确的。我释放 onClickListeners 并清除 onStop() 中的动画。但是,如果我在 onStop() 中设置断点,则不会在我期望它发生时调用它。有时它会在重新创建活动时立即调用,但有时会在几秒钟后调用。

但是,如果我按下 Home 按钮,则会正确调用 onStop,当我切换回应用程序时一切正常。

【问题讨论】:

  • 请贴一些代码

标签: animation out-of-memory image-scaling android-2.1-eclair


【解决方案1】:

最简单的解决方案是在应用标签下添加清单

android:largeHeap="true" 

但这并不能解决您的问题,只需再推迟几轮 此链接将帮助您分析您的应用程序并查看导致此问题的原因: http://blogs.innovationm.com/android-out-of-memory-error-causes-solution-and-best-practices/

我猜这与图像有关,因为我也有这个问题.. 这个问题的android官方链接是: http://developer.android.com/training/displaying-bitmaps/index.html

这是帮助我的链接.. 试试看 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

希望有帮助

【讨论】:

  • 谢谢!这些链接以及stackoverflow.com/questions/21328745/… 帮助我解决了这个问题。现在由于 Locale 出现了类似的问题。我将为此提出一个新问题。对不起,我不能投票给你,仍然没有足够的声誉。
  • 您可以将此问题标记为已解决吗?如果这解决了你的问题:)
猜你喜欢
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
相关资源
最近更新 更多