ViewModel — это компонент Jetpack, предназначенный для хранения и управления данными UI-связанным способом. Его основная цель — сохранять данные UI во время изменений конфигурации, таких как поворот экрана, и переживать жизненный цикл Activity или Fragment.
Особенности ViewModel:
Как использовать:
Создайте класс, наследующий ViewModel.
kotlin
Получите экземпляр ViewModel в Activity или Fragment.
kotlin
Используйте ViewModelProvider.Factory для создания экземпляров ViewModel с зависимостями.
kotlin
Сравнение с onSaveInstanceState():
| Характеристика | ViewModel | onSaveInstanceState() |
|---|---|---|
| Переживание конфиг. изм. | Да | Да (для небольших объемов данных) |
| Переживание процесса | Нет (после уничтожения процесса данные теряются) | Да (для небольших объемов данных) |
| Хранение данных | Объекты, LiveData | Bundle (примитивы, Serializable, Parcelable) |
| Утечки памяти | Нет (при правильном использовании) | Возможно при хранении ссылок на Activity/View |
| Сложность реализации | Сложнее для простых сценариев | Проще для простых сценариев |
ViewModel помогает создавать более устойчивые и легко тестируемые приложения, отделяя UI от логики обработки данных.