相关疑难解决方法(0)

主要活动在销毁后不会被垃圾收集,因为它是间接由InputMethodManager引用的

我从这里开始关注"避免内存泄漏"一文.

然而,所提出的解决方案不能解决泄漏问题.我在Windows XP(SDK 2.3.1)上使用Android模拟器测试了这个.我倾倒堆并检查主要活动仍在堆中(我使用了MAT)

这是我做的:

  1. 使用HelloWorldActivity创建HelloWorld应用程序(它没有子视图)
  2. 运行模拟器并启动HelloWorld应用程序.
  3. 单击后退键关闭它.
  4. 导致DDMS和转储堆中的gc < - 这里我找到了HelloWorldActivity实例.
  5. "GC Roots的路径"显示了以下路径.

HelloWorldActivity < - PhoneWindow $ DecorView < - InputMethodManager

InputMethodManager是一个单例和三个引用DecorView的引用,它引用了HelloWorldActivity.

我无法理解为什么InputMethodManager仍然引用DecorView实例,即使在活动被销毁之后.

是否有任何方法可以确保主要活动在关闭之后被销毁并且GC能够?

android garbage-collection android-activity inputmethodmanager

34
推荐指数
1
解决办法
7145
查看次数