我想从 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()
}
}
但是,一旦我到达具有属性 viewToRestore 的 Fragment B,FragmentA (RootFragment) 就会泄漏。
有什么解决方案既可以不泄漏又能达到同样的目的吗?
最佳答案
泄漏是误报。从 Fragment 的角度来看,保留您在 onCreateView
中创建的 View 并稍后返回它是完全没问题的,前提是您的 Fragment 没有保留或以其他方式保持比用于创建的 Context 更长的时间 View 还活着。
关于android - 尝试在 onDestoryView() 之外保留 fragment View 的引用时发生内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058501/