Ответ
Коллбэк onSavedInstanceHandle вызывается автоматически системой Android при уничтожении активити/фрагмента (например, при повороте экрана или при убийстве процесса системой). Он сохраняет состояние в SavedStateHandle, которое затем можно восстановить при пересоздании.
Пример с ViewModel:
class MyViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
init {
savedStateHandle.set("key", "value") // сохранение
val value = savedStateHandle.get<String>("key") // восстановление
}
}
Для фрагментов/активити используется SavedStateRegistry, который интегрируется с Lifecycle.
Ответ 18+ 🔞
Да ты посмотри, какой прикол! Вот этот ваш onSavedInstanceHandle — он, блядь, как хитрая жопа, работает незаметно, но без него вообще пиздец. Система Андроид сама его дергает, когда собирается прибить твою активити или фрагмент. Ну, знаешь, поворот экрана сделал, или там память кончилась — система такая: "А ну-ка, сука, на выход!"
И вот тут-то он и вступает в игру, этот коллбэк. Всё, что ты в него положил, летит в специальную штуку — SavedStateHandle. А потом, когда твой компонент воскресает из пепла, как феникс, ёпта, всё это добро можно оттуда вытащить. Удобно же, а?
Смотри, как с ViewModel это выглядит, там вообще красота:
class MyViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
init {
savedStateHandle.set("key", "value") // Сохраняем что-то, типа "спрятал конфетку"
val value = savedStateHandle.get<String>("key") // А потом, хоп, и достал! Магия, блядь.
}
}
Чувак, ты представляешь? Ты просто создаешь ViewModel, а ей в конструктор уже прилетает этот SavedStateHandle, набитый твоими старыми данными, если они были. Ничего делать не надо, система всё сама подогнала. Просто сказка, а не жизнь.
А для фрагментов или активити, которые сами по себе, без ViewModel, там история чуть иная. Там есть SavedStateRegistry, который, блядь, как швейцарский нож, встроен прямо в Lifecycle. Он за всем следит, чтобы в нужный момент всё сохранить и не потерять. В общем, технология, ядрёна вошь, продумана до мелочей. Главное — не проебаться и правильно ей пользоваться, а то будет тебе хиросима с восстановлением данных, вот это я тебе гарантирую.