我正在开发一个应用程序,它有一个显示应用程序标题(两个动画图像视图覆盖)、两个动画图片(也被覆盖)和三个按钮的主要活动。该活动还有一个背景图像,与其他活动使用的相同。
应用程序从一个活动流向另一个活动,最终,这个主要活动再次启动(使用 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,当我切换回应用程序时,一切正常。