Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Android: presenter, on save instance state, bundle, retain fragment, lifecycle

При повороте экрана нужно сохранить и изменить определённые данные в Presenter без ViewModel. На каком этапе жизненного цикла и как это сделать?

Этот вопрос проверяет знания хранения состояния при пересоздании 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 для сложных объектов.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Android

    Android

Ключевые слова

#presenter

#on save instance state

#bundle

#retain fragment

#lifecycle

Подпишись на Android Developer в телеграм