假设我们将一个或多个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
异常,因为对于基础片段,editText
是null
。也许我没有正确绑定,也许这是Kotlin Android扩展的问题。