android.os.MessageQueue内存泄漏?

时间:2014-04-29 23:32:40

标签: android user-interface memory-leaks

我在上下文感知自适应GUI领域工作,简而言之,我试图在给定条件为真时调整GUI。为了适应GUI,我将每个可能的布局作为布局XML,并且当它适应时,它加载新布局,并通过将新UI元素从新视图组移动到旧视图组来将新视图组与旧视图组合。

出于某种原因,我发现android.os.MessageQueue实例获取内存,并且每次屏幕更改后,内存都不会释放。由于我没有重新加载Activity并且只使用应用程序上下文,所以当我将GUI更改回第一个布局时,我不明白为什么没有释放内存。

我已经处理了涉及MessageQueue和Looper的其他问题,但我不明白为什么这个对象变大了。有人可以帮我吗?

更新:我想我已经解决了我的问题

我认为我的问题是我在没有让消息队列运行的情况下使每个ViewGroup脱离了上下文。因此,即使在视图应该消失之后,也不会处理消息。我发现在退出上下文之前从ViewGroup调用removeAllViews解决了这个问题。

1 个答案:

答案 0 :(得分:0)

(问题的作者提到解决方案 - 只想添加一些细节)

有一个类似的问题:

  1. 将使用LayoutInflater填充的视图组添加到活动布局。视图组应包含EditText
  2. 专注于EditText打开软键盘(Leak没有这个步骤就没有重现)
  3. 旋转设备以重新创建活动/对话框
  4. 结果:发生泄漏,似乎涉及键盘。尝试了不同的方法来避免内存泄漏。

    解决方案:致电* removeAllViews"在onDestroy()帮助。

    LeakCannary

    很容易发现泄漏

    以下是相关问题: EditText causing memory leak