我从事上下文感知自适应GUI领域的工作,简而言之,当给定条件为真时,我试图调整GUI。为了适应GUI,我将每个可能的布局都作为布局XML,当它适应时,它加载新的布局,并通过将新的UI元素从新的视图组移动到旧的视图组来合并新的视图和旧的视图。
不过,出于某种原因,我发现android.os.MessageQueue实例正在增加内存,每次屏幕更改后,内存都不会释放。由于我没有重新加载"活动",只使用应用程序上下文,所以我不明白为什么当我将GUI更改回第一个布局时,内存没有被释放。
我对其他涉及MessageQueue和Looper的问题也很满意,但我不明白为什么这个对象越来越大。有人能帮我吗?
更新:我想我已经解决了我的问题
我想我的问题是我断章取义地处理了每个ViewGroup,而没有让消息队列运行。因此,即使在视图应该消失之后,消息也不会得到处理。我发现在断章取义之前从ViewGroup中调用removeAllViews可以解决问题。
(问题的作者提到了解决方案-只是想添加一些细节(
有一个类似的问题:
- 将使用layout充气器充气的视图组添加到活动布局中。视图组应包含EditText
- 关注EditText打开软键盘(Leak没有这个步骤就无法复制(
- 旋转设备以重新创建活动/对话框
结果:发生泄漏,似乎涉及键盘。尝试了不同的方法来避免内存泄漏。
解决方案:调用onDestroy((中的*removeAllViews"有帮助。
LeakCannary 很容易检测到泄漏
以下是相关问题:EditText导致内存泄漏