Sobes.tech
Junior — Middle

Milyen következményekkel járhat a ViewModel konstruktorának közvetlen hívása az példány létrehozásához?

sobes.tech MI

Válasz az MI-től

A ViewModel konstruktorának közvetlen hívása (például new ViewModel() segítségével) Androidban azt eredményezi, hogy a ViewModel életciklusa nem lesz a rendszer által kezelve. Ennek eredményeként:

  • A ViewModel nem lesz megőrizve képernyőforgatás vagy Activity/Fragment újraalkotásakor.
  • Elveszik a ViewModel fő előnye — az állapot megőrzése.
  • Memóriaszivárgások fordulhatnak elő, ha a ViewModel UI-ra mutató hivatkozásokat tartalmaz.

A helyes módszer a ViewModel létrehozására a ViewModelProvider használata, amely biztosítja a helyes életciklus-kezelést:

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

Ez biztosítja egyetlen ViewModel példány újrahasznosítását a komponens életciklusa során.