我正在使用自定义Backstack来管理“应用程序”屏幕。基本上,自定义BackStack是一个列表。问题在于此方法会导致内存泄漏。
此方法检查单元格中是否已经有片段:
private fun addToBackStack(fragment: Fragment){
try {
if (backStack.isNotEmpty() && backStack[backStackPosition] != null)
fragmentUtils.removeFragment(backStack[backStackPosition]!!)
} catch (e: IndexOutOfBoundsException) {
e.printStackTrace()
}
backStack.add(backStackPosition, fragment)
}
这是我尝试将其删除的方法:
fun removeFragment(fragment: Fragment?){
fm.beginTransaction().remove(fragment).commit()
}
但是,根据LeakCanary的说法,我仍然存在内存泄漏。我在做错什么,或者如何完全破坏一个片段?