Что такое «смена конфигурации»?
Как происходит пересоздание?
Это любое изменение, требующее пересоздания Activity или Fragment, например:
- поворот экрана
- смена языка
- смена темы (light/dark)
- подключение клавиатуры и т.п.
По умолчанию Android убивает и пересоздаёт Activity, чтобы применить новую конфигурацию.
Как происходит пересоздание?
Activity.onPause()Activity.onStop()Activity.onSaveInstanceState(Bundle)— Система сохраняет состояниеActivity.onDestroy()— Старый экземпляр уничтожается- Новый
Activityсоздаётся сonCreate(Bundle?)— сюда приходитsavedInstanceState - Ваша задача — восстановить всё, что важно
Куда сохраняется Bundle?
- Android сериализует Bundle (все
putString(),putInt(), и т.д.) - Он кладётся в
ActivityClientRecordна стороне ActivityManagerService - Когда процесс пересоздаётся — данные извлекаются и передаются в
onCreate()
‼️ Bundle должен содержать только примитивы, Parcelable, Serializable — иначе он НЕ будет сериализован корректно и Activity не восстановится.