Android 完全销毁碎片实例

Android 完全销毁碎片实例,android,android-fragments,kotlin,Android,Android Fragments,Kotlin,我使用一个自定义的backbackback来管理应用程序屏幕。基本上,自定义backbackback是一个列表。问题是这种方法不会导致内存泄漏 此方法检查单元格中是否已存在片段: private fun addToBackStack(fragment: Fragment){ try { if (backStack.isNotEmpty() && backStack[backStackPosition] != null) fr

我使用一个自定义的backbackback来管理应用程序屏幕。基本上,自定义backbackback是一个列表。问题是这种方法不会导致内存泄漏

此方法检查单元格中是否已存在片段:

    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的说法,我仍然有内存泄漏。我做错了什么,或者如何完全销毁一个片段?

我的意思是,如果存在内存泄漏,那么显然内存泄漏本身就在别处。尽管如果您检查进程死机,您的backbackback肯定不会工作,但请参阅@EpicPandaForce,backbackback工作良好且配置发生更改。根本没有撞车。主要问题是内存泄漏。CanaryLeak追踪到了后面。没有其他地方可以保存未使用片段的实例。您是否测试过进程死亡,这与配置更改完全不同?为什么您需要自定义备份?显然,您不能保留片段实例,因为它们将泄漏主机活动上下文。@EpicPandaForce是的,一切正常。也许应用程序会再启动1秒钟,但没有问题。