我想从fragmenta(rootfragment)转到fragmentb,但我不想在fragmenta从fragmentb返回后重新创建它的视图。
我使用喷气包导航在碎片之间导航。
为了实现上述目标,我有一个这样的片段:

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()
    }
}

但是当我使用属性viewtorestore到达片段b时,片段a(rootfragment)正在泄漏。
android - 尝试在onDestoryView()之外保留Fragment View 的引用时发生内存泄漏-LMLPHP
有什么解决方案可以在不泄漏的情况下工作,但可以达到相同的目标吗?

最佳答案

泄漏是假阳性。从片段的角度来看,保留在onCreateView中创建的视图并在稍后返回它是完全可以的,前提是您的片段没有被保留或以其他方式保留的时间长于用于创建视图的上下文是活动的。

10-06 13:53