Что происходит с фрагментами в заднем стеке? - PullRequest
0 голосов
/ 31 октября 2018

Скажем, мы используем один или несколько 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.

...