android.widget.LinearLayout实例泄漏

android.widget.LinearLayout实例泄漏,android,android-activity,memory-leaks,leakcanary,Android,Android Activity,Memory Leaks,Leakcanary,我有两个活动,提问重新选择活动和提问不活动。QuestionnaireMainActivity是由QuestionnaireSelectionActivity以意图启动的。活动显示了一系列片段 当我试图通过按下后退按钮从QuestionnaireMainActivity返回QuestionnaireSelectionActivity时,LeakCanary报告泄漏 这两项活动都没有以任何方式引用另一项(意图除外)。当片段被销毁并且没有内部类时,我将对视图等的所有引用设置为null 问题重新选择活

我有两个活动,提问重新选择活动和提问不活动。QuestionnaireMainActivity是由QuestionnaireSelectionActivity以意图启动的。活动显示了一系列片段

当我试图通过按下后退按钮从QuestionnaireMainActivity返回QuestionnaireSelectionActivity时,LeakCanary报告泄漏

这两项活动都没有以任何方式引用另一项(意图除外)。当片段被销毁并且没有内部类时,我将对视图等的所有引用设置为null

问题重新选择活动确实有一个线性布局,但我不明白它是如何涉及到这个问题的。我在代码中没有引用任何线性布局

谁能帮助我了解我的活动是如何泄漏的

以下是来自LeakCanary的报告:

│ GC Root: System class
│
├─ android.view.WindowManagerGlobal class
│    Leaking: NO (a class is never leaking)
│    ↓ static WindowManagerGlobal.sDefaultWindowManager
│                                 ~~~~~~~~~~~~~~~~~~~~~
├─ android.view.WindowManagerGlobal instance
│    Leaking: UNKNOWN
│    ↓ WindowManagerGlobal.mViews
│                          ~~~~~~
├─ java.util.ArrayList instance
│    Leaking: UNKNOWN
│    ↓ ArrayList.elementData
│                ~~~~~~~~~~~
├─ java.lang.Object[] array
│    Leaking: UNKNOWN
│    ↓ Object[].[2]
│               ~~~
├─ android.widget.LinearLayout instance
│    Leaking: YES (View.mContext references a destroyed activity)
│    mContext instance of com.android.neptune.QuestionnaireMainActivity with mDestroyed = true
│    View#mParent is set
│    View#mAttachInfo is not null (view attached)
│    View.mWindowAttachCount = 1
│    ↓ LinearLayout.mContext
╰→ com.android.nq.QuestionnaireMainActivity instance
​     Leaking: YES (ObjectWatcher was watching this because com.android.nq.QuestionnaireMainActivity received Activity#onDestroy() callback and Activity#mDestroyed is true)
​     key = c4204b14-4279-44d3-ba57-83e5cb26a1ef
​     watchDurationMillis = 5185
​     retainedDurationMillis = 183

该泄漏看起来与此处确定的泄漏相似:

看起来Android WindowManagerGlobal singleton在活动被销毁后保留了对LinearLayout实例的引用,但不清楚原因

这很可能不是应用程序中的错误,但可能是由特定于应用程序的行为触发的


你能在利卡纳利创建一个新问题吗?如果您提供的是Android版本,您可以在其中看到这一点以及一个hprof文件(这非常有用),那么我们可以在Android框架中调查并确定确切的问题。

嗨,我也经历过这一点,不同之处在于它发生在屏幕旋转期间。这是假阳性吗?