Этот вопрос проверяет знания хранения состояния при пересоздании Activity в MVP без использования ViewModel.
При повороте экрана Activity уничтожается и создаётся заново. В MVP можно сохранить данные в onSaveInstanceState(Bundle) Presenter-а через Bundle (через интерфейс Activity → Presenter) и восстановить в onCreate нового View, передав сохранившийся Bundle. Либо хранить Presenter с данными в setRetainInstance(true) у Fragment.
onSaveInstanceState
В Activity: override fun onSaveInstanceState(out: Bundle) { super.onSaveInstanceState(out); presenter.saveState(out) }
Сохранение в Presenter
fun saveState(b: Bundle) { b.putString("key", data) }
Восстановление в onCreate
В Activity: savedInstanceState?.let { presenter.restoreState(it) }
Retained Fragment
Создать невидимый Fragment: fragment.isRetainInstance = true, хранить Presenter там.
При конфигурации Presenter не пересоздаётся.
Вывод:
onSaveInstanceState для лёгких данных, Retained Fragment для сложных объектов.