Непосредственный вызов конструктора ViewModel (например, через new ViewModel()) в Android приводит к тому, что жизненный цикл ViewModel не будет управляться системой. В результате:
Какие последствия могут возникнуть при непосредственном вызове конструктора ViewModel для создания её экземпляра?
Непосредственный вызов конструктора ViewModel (например, через new ViewModel()) в Android приводит к тому, что жизненный цикл ViewModel не будет управляться системой. В результате:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Непосредственный вызов конструктора ViewModel (например, через new ViewModel()) в Android приводит к тому, что жизненный цикл ViewModel не будет управляться системой. В результате:
- ViewModel не будет сохраняться при поворотах экрана или пересоздании Activity/Fragment.
- Потеряется основное преимущество ViewModel — сохранение состояния.
- Возможны утечки памяти, если ViewModel содержит ссылки на UI.
Правильный способ создания ViewModel — использовать ViewModelProvider, который гарантирует правильное управление жизненным циклом:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
Это обеспечивает повторное использование одного экземпляра ViewModel в рамках жизненного цикла компонента.