Sobes.tech
Junior — Middle

Koje posledice mogu nastati prilikom direktnog pozivanja konstruktora ViewModel za kreiranje njenog primera?

sobes.tech АИ

Одговор од АИ

Direktno pozivanje konstruktora ViewModel (na primer, putem new ViewModel()) u Androidu dovodi do toga da sistem neće upravljati životnim ciklusom ViewModel-a. Kao rezultat:

  • ViewModel neće biti sačuvan tokom rotacija ekrana ili ponovnog kreiranja Activity/Fragment.
  • Gubi se glavna prednost ViewModel-a — očuvanje stanja.
  • Moguće su curenja memorije ako ViewModel sadrži reference na UI.

Pravi način za kreiranje ViewModel-a je korišćenje ViewModelProvider, koji garantuje pravilno upravljanje životnim ciklusom:

val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)

Ovo obezbeđuje ponovno korišćenje jednog primera ViewModel-a u okviru životnog ciklusa komponente.