多次重新加载活动时出现内存不足错误

时间:2014-05-25 09:20:56

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

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

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

首先,我将所有图像放在drawable文件夹中,并且在到达主要活动5次后出现问题。然后,我调整了位图大小并将它们放在适当的文件夹中,具体取决于密度和到达主要活动14次后出现的问题。现在,我刚刚删除了背景图像以进行测试,并且在重新启动20次之后出现了Out of Memory。

此外,如果我按“主页”按钮然后切换回我的应用程序,问题似乎要到很晚才出现。

此外,我在Nexus 5中测试了应用程序,而且Out of Memory从未发生过。

所以......我的手机有问题吗?用Android 2.1?

谢谢!

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

例如,有一次,我需要重新创建活动。随着"重新创造"方法不适用于我的最低API级别(7),我按如下方式执行:

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

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

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

1 个答案:

答案 0 :(得分: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

希望有所帮助