ViewModel переживает изменения конфигурации (смена ориентации, языка), сохраняя данные. Жизненный цикл ViewModel связан с жизненным циклом Activity или Fragment, но переживает их пересоздание.
OnSavedInstanceState является частью жизненного цикла Activity или Fragment. Он используется для сохранения небольшого объема данных перед уничтожением компонента (например, при нехватке памяти или изменении конфигурации). Данные сохраняются в Bundle.
Основные отличия:
ViewModel переживает изменения конфигурации, OnSavedInstanceState — нет.ViewModel предназначен для хранения данных, необходимых в течение всего жизненного цикла UI-контроллера. OnSavedInstanceState — для сохранения небольшого состояния.ViewModel хранится в специальном хранилище, предоставляемом Architecture Components. OnSavedInstanceState сохраняет данные в Bundle, который затем восстанавливается при создании UI-контроллера.ViewModel предназначен для UI-логики и данных, переживающих изменения конфигурации. OnSavedInstanceState — для сохранения пользовательского состояния на момент уничтожения компонента.| Критерий | ViewModel | OnSavedInstanceState |
|---|---|---|
| Переживает изменения конфигурации? | Да | Нет |
| Типичный объем данных | Достаточно большой | Небольшой |
| Механизм хранения | Специальное хранилище Architecture Components | Bundle |
| Основное назначение | UI-логика и данные | Сохранение состояния пользовательского интерфейса |
Пример использования ViewModel:
kotlin
Пример использования OnSavedInstanceState:
kotlin