Android FLAG_NEW_TASK和FLAG_SINGLE_TOP活动不是垃圾回收

时间:2014-12-20 23:21:58

标签: android garbage-collection out-of-memory flags

我遇到了申请问题。

我从一个活动的上下文之外开始一个活动,所以我必须用FLAG_NEW_TASK标记它(否则我有一个例外,告诉我我必须添加标志)。

我遇到的问题是,在调用onDestroyed之后,活动及其视图不会被垃圾收集,因此每次启动活动时,它都会要求更多内存,并且在一段时间后,它会遇到OutOfMemory异常。

我使用MAT来分析内存,它告诉我内存中有X个活动实例,X是活动开始的时间。

我没有对活动或其持有的视图的任何静态引用

有没有办法让活动正确地收集垃圾,或者有什么我不知道我正在使用的标志?

由于

编辑1

我发现解决它的唯一方法是将活动放在自己的进程中,并在活动结束时终止进程。但我知道这根本不是正确的方法......

1 个答案:

答案 0 :(得分:2)

如果您的活动的引用仍然存在,则会发生这种情况。有很多方法可以实现 - 最常见的一种方法是让AsyncTask仍在运行。

以下是Handler内部类的活动泄漏示例:http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html