堆栈中的碎片会如何处理?

时间:2018-10-31 13:32:17

标签: android android-fragments fragment-backstack

假设我们将一个或多个Activity与多个Fragment一起使用,并将它们添加到BackStack中。例如,

fragmentManager?.beginTransaction()
?.replace(R.id.container, fragment, TAG)
?.addToBackStack(null)
?.commit()

添加3-5个片段后,我们尝试返回。这些片段是否保存它们的状态并进行还原(通过重新创建)?还是将它们保留在内存中,以便在添加100个片段之后我们将收到OOM异常?

我对此问题感兴趣,因为使用Kotlin Android extensions。当我关闭屏幕时,称为onStop(),它迫使BackStack中的片段调用onSaveInstanceState()事件。在这种情况下,如果我使用

override fun onSaveInstanceState(outState: Bundle) {
    outState.putString(ARG_NAME, editText.text.toString())
    super.onSaveInstanceState(outState)
}

我将在NPE上得到一个editText.text异常,因为对于基础片段,editTextnull。也许我没有正确绑定,也许这是Kotlin Android扩展的问题。

0 个答案:

没有答案