Ответ
Для сохранения данных в ViewModel между пересозданиями активити/фрагмента используйте ViewModel с SavedStateHandle. Это позволяет сохранять данные даже при убийстве процесса системой.
Пример:
class MyViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
private val _counter = savedStateHandle.getLiveData("counter", 0)
val counter: LiveData<Int> = _counter
fun increment() {
_counter.value = (_counter.value ?: 0) + 1
}
}
Ключевые моменты:
SavedStateHandleавтоматически сохраняет простые типы (Int, String и т.д.)- Для сложных объектов используйте
ParcelableилиSerializable - Данные сохраняются между поворотами экрана и при временном убийстве процесса
- Для навигации между фрагментами лучше использовать аргументы Navigation Component