我遇到了申请问题。
我从一个活动的上下文之外开始一个活动,所以我必须用FLAG_NEW_TASK标记它(否则我有一个例外,告诉我我必须添加标志)。
我遇到的问题是,在调用onDestroyed之后,活动及其视图不会被垃圾收集,因此每次启动活动时,它都会要求更多内存,并且在一段时间后,它会遇到OutOfMemory异常。
我使用MAT来分析内存,它告诉我内存中有X个活动实例,X是活动开始的时间。
我没有对活动或其持有的视图的任何静态引用
有没有办法让活动正确地收集垃圾,或者有什么我不知道我正在使用的标志?
由于
编辑1
我发现解决它的唯一方法是将活动放在自己的进程中,并在活动结束时终止进程。但我知道这根本不是正确的方法......
答案 0 :(得分:2)
如果您的活动的引用仍然存在,则会发生这种情况。有很多方法可以实现 - 最常见的一种方法是让AsyncTask仍在运行。
以下是Handler内部类的活动泄漏示例:http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html