У меня есть два вида деятельности: «Анкета для выбора» и «Анкета для основной деятельности». АнкетаMainActivity запускается с намерением при помощи метода вопросника. Активность QuestionnaireMainActivity показывает последовательность фрагментов.
Когда я пытаюсь go вернуться к QuestionnaireSelectionActivity из QuestionnaireMainActivity, нажав кнопку «назад», LeakCanary сообщает об утечке.
Ни одно из этих двух действий никоим образом не ссылается на другое (кроме намерения). Я установил все ссылки на представления et c на null, когда фрагмент уничтожен и нет внутренних классов.
QuestionnaireSelectionActivity действительно имеет LinearLayout, но я не понимаю, как это может быть связано с этой проблемой. Я не ссылался на LinearLayout в моем коде.
Может ли кто-нибудь помочь мне понять, как протекает моя деятельность?
Ниже представлен отчет 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