0

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

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

起初,我在drawable文件夹中拥有所有图像,并在达到主要活动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,当我切换回应用程序时,一切正常。

4

1 回答 1

1

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

android:largeHeap="true" 

但这不会解决您的问题,只需将其延迟几轮此链接将帮助您分析您的应用程序并查看导致此问题的原因:http: //blogs.innovationm.com/android-out-of-memory -错误原因解决方案和最佳实践/

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

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

希望有帮助

于 2014-05-25T11:39:30.457 回答