Ответ
ViewModel сохраняет состояние при повороте экрана автоматически. Однако для сохранения данных при уничтожении процесса (например, системой) используйте:
- SavedStateHandle - встроенное решение:
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
var state: String
get() = savedStateHandle["key"] ?: ""
set(value) = savedStateHandle.set("key", value)
}
- onSaveInstanceState() - для активити/фрагментов:
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("KEY", data)
}
-
Сохранение в базу данных (Room) - для сложных данных
-
SharedPreferences - для простых значений
Для критически важных данных лучше использовать комбинацию SavedStateHandle + постоянное хранилище (БД).