Ответ
ViewModel сохраняется при повороте экрана благодаря механизму onRetainNonConfigurationInstance(), который хранит ViewModel в специальном хранилище до пересоздания Activity. При уничтожении Activity (не из-за конфигурационных изменений) ViewModel очищается.
Для сохранения данных при process death используйте SavedStateHandle:
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
val liveData = savedStateHandle.getLiveData<String>("key")
fun saveData(value: String) {
savedStateHandle["key"] = value
}
}
Ключевые моменты:
- ViewModel переживает поворот экрана
- Не сохраняется при finish() или системном убийстве процесса
- Для постоянного хранения нужен SavedStateHandle или другие механизмы (Room, DataStore)