Android FLAG_NEW_任务和FLAG_SINGLE_TOP活动未被垃圾收集

Android FLAG_NEW_任务和FLAG_SINGLE_TOP活动未被垃圾收集,android,garbage-collection,out-of-memory,flags,Android,Garbage Collection,Out Of Memory,Flags,我的申请有问题 我从活动的上下文之外启动一个活动,因此我必须用flag_NEW_TASK标记它(否则我会遇到一个异常,告诉我必须添加该标志) 我遇到的问题是,调用onDestroyed in后,活动及其视图不会被垃圾收集,因此每次活动启动时,它都会请求更多内存,并且在特定时间后,它会遇到OutOfMemory异常 我使用MAT来分析内存,它告诉我内存中有X个活动实例,X是活动开始的时间 我没有任何对活动或它所持有的视图的静态引用 是否有任何方法可以正确地对活动进行垃圾收集,或者对于我使用的标志是

我的申请有问题

我从活动的上下文之外启动一个活动,因此我必须用flag_NEW_TASK标记它(否则我会遇到一个异常,告诉我必须添加该标志)

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

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

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

是否有任何方法可以正确地对活动进行垃圾收集,或者对于我使用的标志是否有任何我不知道的地方

谢谢

编辑1


我发现解决这个问题的唯一方法是将活动放在它自己的流程中,并在活动完成时终止流程。但我知道这根本不是正确的方式…

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


下面是一个处理程序内部类的活动泄漏示例:

似乎不是我的问题。我已经删除了所有post/POSTDayed、异步任务和任何匿名类创建,但仍然存在相同的问题,即问题所在。我使用的DigitalClock从不注销自身,因此它阻止GC收集它。