Junior — Middle
Quais as consequências que podem surgir ao chamar diretamente o construtor de ViewModel para criar a sua instância?
sobes.tech IA
Resposta da IA
Chamar diretamente o construtor ViewModel (por exemplo, através de new ViewModel()) no Android faz com que o ciclo de vida do ViewModel não seja gerido pelo sistema. Como resultado:
- O ViewModel não será preservado durante rotações de tela ou recriações de Activity/Fragment.
- A principal vantagem do ViewModel — a preservação do estado — é perdida.
- Podem ocorrer fugas de memória se o ViewModel contiver referências à UI.
A forma correta de criar um ViewModel é usar ViewModelProvider, que garante uma gestão adequada do ciclo de vida:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
Isso garante a reutilização de uma única instância de ViewModel dentro do ciclo de vida do componente.