退出活动后如何释放实际的Activity对象内存?

con*_*sed 5 android memory-management out-of-memory android-activity

我为我的Android应用程序得到了一个OutofMemoryError,并且对于最新情况我有点困惑.基本上发生了什么,我能够在前几次运行它,但是当我尝试退出它然后再次快速重复打开它时,我得到一个内存不足错误.

我已经尝试过研究这个主题,并发现recycle()方法通常是问题所在.但是,我在每个位图(存储在一个对象容器中,存储在一个arraylist中)中调用了recycle方法,但仍然遇到了问题.

在这样做之后,我尝试使用Eclipse Memory Analyzer查看堆转储,当我遇到一些奇怪的东西时.退出活动后(回到启动器活动,然后通过按钮再次打开活动),我使用内存分析器截取了堆转储的屏幕截图.事实证明,每次我退出并重新进入活动,正在创建活动对象的另一个实例,并且即使正在调用onDestroy()方法(也有回收/清理代码),旧的未被释放.

然后我尝试重写finalize方法,看看当活动退出到启动器活动时它是否被调用,但它没有被调用.我读了一些其他stackoverflow线程,并不总是调用finalize(),所以最后,我仍然不确定最新情况.

最终,我的问题是: 我如何确保在从活动退出到另一个活动后释放Activity对象(活动对象本身,而不是从活动创建的东西)?

Kev*_*ing 0

一种选择是在清单文件中将启动模式设置为 singleInstance 或 singleTask。这将确保不会创建该活动的另一个实例。

文档示例