【发布时间】:2011-02-18 06:02:37
【问题描述】:
我关注了来自here 的“避免内存泄漏”文章。
但是,建议的解决方案并不能解决泄漏问题。我在 Windows XP (SDK 2.3.1) 上使用 android 模拟器对此进行了测试。我转储了堆并检查了主要活动仍在堆中(我使用了 MAT)
这就是我所做的:
- 使用 HelloWorldActivity 创建 HelloWorld 应用(它没有子视图)
- 运行模拟器并启动 HelloWorld 应用。
- 点击后退键将其关闭。
- 导致 DDMS 中的 gc 和转储堆
- 'Path to GC Roots' 显示以下路径。
HelloWorldActivity
InputMethodManager 是一个单例和三个对引用 HelloWorldActivity 的 DecorView 的引用。
我不明白为什么 InputMethodManager 即使在 Activity 被销毁后仍然引用 DecorView 实例。
有什么方法可以确保主要活动在关闭后被销毁并可以进行GC?
【问题讨论】:
-
我已经在两部手机上对此进行了测试,在这两种情况下,Activity(没有覆盖)在后按后都是 GC-ed。
-
问题中指向文章的链接无效。这是正确的(无论如何我认为这是预期的链接):android-developers.blogspot.com/2009/01/…
标签: android android-activity garbage-collection inputmethodmanager