Зачем нужен saveInstanceState(), как и где используется? После чего и до чего вызывается onSaveInstanceState?

Нужен savedInstanceState, чтобы временно сохранить UI-состояние, которое:

  • важно пользователю (введённый текст, вкладка, скролл)
  • и может пропасть при пересоздании Activity или Fragment
Аналогия

Представь, что ты играешь в шахматы на доске. Вдруг кто-то стучит в дверь, и ты убираешь доску, но фотографируешь позицию фигур.

Потом возвращаешься, ставишь доску — и восстанавливаешь фигуры по фото.

onSaveInstanceState() — это как сфоткать текущую позицию.
savedInstanceState — это снимок доски.
onCreate() или onViewStateRestored() — момент, когда ты по снимку восстанавливаешь игру.

Где и как используется?

1. Activity:

  • onSaveInstanceState(Bundle outState) — вызывается перед уничтожением Activity системой (например, при повороте экрана)
  • onCreate(Bundle savedInstanceState) — при пересоздании Activity, данные можно извлечь и восстановить

2. Fragment:

  • onSaveInstanceState(Bundle outState) — аналогично
  • onViewStateRestored(Bundle savedInstanceState) — удобное место для восстановления UI
  • onCreateView() / onCreate() — можно тоже использовать savedInstanceState
Когда вызывается onSaveInstanceState()?

После onPause() и до уничтожения компонента системой. Чаще всего перед onStop() или onDestroy() в случае, если процесс может быть убит.


Опубликовано

в

от

Метки: