android.support.constraint.ConstraintLayout已泄漏:

Seb*_*Rut 5 android memory-leaks leakcanary

我正在使用LeakCanary检测应用程序中的内存泄漏。我使用它成功地识别并修复了一些泄漏,但是我正在努力寻找该泄漏的根源:

* android.support.constraint.ConstraintLayout has leaked:
* Toast$TN.mNextView
* ? LinearLayout.mContext
* ? HomeActivity.!(mDelegate)!
* ? AppCompatDelegateImplN.!(mActionBar)!
* ? ToolbarActionBar.!(mDecorToolbar)!
* ? ToolbarWidgetWrapper.!(mToolbar)!
* ? Toolbar.mParent
* ? ConstraintLayout
* Reference Key: 552b5bc5-409d-44c4-8412-87341237ae6d
* Device: samsung samsung SM-G960F starltexx
* Android Version: 8.0.0 API: 26 LeakCanary: 1.6.2 0ebc1fc
* Durations: watch=5769ms, gc=153ms, heap dump=933ms, analysis=5802ms
Run Code Online (Sandbox Code Playgroud)

这是由Android SDK或应用专用代码引起的吗?

Seb*_*Rut 12

泄漏是由应用程序特定代码引起的。getActivity().setSupportActionBar()使用片段布局中包含的视图调用的一个片段。当切换到另一个片段时,资源无法被 gc'ed,因为 Activity 仍然持有对不再可见的工具栏的引用。我通过调用getActivity().setSupportActionBar(null)fragmentonDestroyView()方法修复了这个泄漏,该方法删除了对工具栏的引用。