Нужен 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)
— удобное место для восстановления UIonCreateView()
/onCreate()
— можно тоже использоватьsavedInstanceState
Когда вызывается onSaveInstanceState()
?
После onPause()
и до уничтожения компонента системой. Чаще всего перед onStop()
или onDestroy()
в случае, если процесс может быть убит.