Sobes.tech
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.