android - 尝试在 onDestoryView() 之外保留 fragment View 的引用时发生内存泄漏

标签 android android-fragments memory-leaks android-navigation leakcanary

我想从 FragmentA (RootFragment) 转到 FragmentB 但我不想在 FragmentA 从 FragmentB 返回时重新创建它的 View 。

我正在使用 Jetpack Navigation 在 Fragment 之间导航。

为了实现上述目标,我有一个 fragment Fragment 是这样的:

class RootFragment : DaggerFragment() {
    private var viewToRestore: View? = null


    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        return if (viewToRestore != null) {
            viewToRestore!!
        } else {
            return inflater.inflate(R.layout.fragment_root, parent, false)
        }
    }

    override fun onDestroyView() {
        viewToRestore = this.view
        super.onDestroyView()
    }

    override fun onDestroy() {
        super.onDestroy()
    }    
}

但是,一旦我到达具有属性 viewToRestoreFragment BFragmentA (RootFragment) 就会泄漏。

enter image description here

有什么解决方案既可以不泄漏又能达到同样的目的吗?

最佳答案

泄漏是误报。从 Fragment 的角度来看,保留您在 onCreateView 中创建的 View 并稍后返回它是完全没问题的,前提是您的 Fragment 没有保留或以其他方式保持比用于创建的 Context 更长的时间 View 还活着。

关于android - 尝试在 onDestoryView() 之外保留 fragment View 的引用时发生内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058501/

相关文章:

android - Kotlin 等价于 Java 的 equalsIgnoreCase

android:theme ="@android:style/Theme.NoTitleBar.Fullscreen"适用于应用程序级别,但不适用于 Activity 级别。有什么线索吗?

java - Firebase实时数据库: Is there a way to get value from different node?

android - 从 Dialogfragment 中的 Timepicker 返回值到调用 fragment

java - fragment 布局崩溃的问题,从来没有工作的时刻

javascript - Html 5 网格绘制问题

android - 警告框不可见

android - 从 Activity 更新列表 fragment

c++ - SWIG - 包装 std::pair 字符串时内存泄漏

c - 当程序终止时,使用未释放的 malloc 分配的内存会发生什么情况?