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.