Ответ
ViewModel сохраняет данные в памяти во время изменения конфигурации (например, поворот экрана) и живет, пока связанный с ним Activity/Fragment не будет уничтожен полностью. Подходит для больших или сложных данных (например, списки из сети).
onSaveInstanceState сохраняет данные в Bundle при временном уничтожении процесса (например, при нехватке памяти). Подходит для небольших простых данных (например, ID элемента), так как Bundle имеет ограниченный размер.
Пример:
// ViewModel
class MyViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
// onSaveInstanceState
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("KEY", "value")
super.onSaveInstanceState(outState)
}
Используй ViewModel для временных данных в рамках жизни экрана, а onSaveInstanceState — для критичных данных, которые должны пережить убийство процесса.