Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kako deluje nagrobnost v mvvmcross


Kako deluje nagrobnost v mvvmcross


Ogrsnjenje v MVVMcross se nanaša na postopek shranjevanja in obnove stanja ViewModela, ko je aplikacija zaradi nizkih pomnilniških pogojev začasno ustavljena ali prekinjena, skupni scenarij na mobilnih platformah, kot sta Windows Phone in Android. MVVMcross zagotavlja mehanizme za učinkovito ravnanje s tem postopkom.

Konstrukcija in življenjski cikel

MVVMcross ViewModels se sprožijo z uporabo vsebnika MOK, ki vbrizga odvisnosti v ViewModel. Življenjski cikel ViewModela v MVVMcross vključuje več ključnih metod:

- Konstrukcija: ViewModel je ustvarjen z odvisnostmi, ki jih vbrizga prek posode za MOK.
- init (): inicializira ViewModel z navigacijskimi parametri.
- ReloadState (): obnovi stanje ViewModela po nagrobniku.
- start (): poklican, ko sta inicializacija in rehidracija popolna [3].

Shranilo stanje

Ko je aplikacija nagnjena, MVVMcross na ViewModel pokliče metodo `saveStateToBundle`. Ta metoda vam omogoča, da shranite stanje vašega ViewModela s shranjevanjem podatkov v `imvxbundle`. Priporočljivo je uporabiti JSON serializacijo za shranjevanje zapletenih podatkov [1].

Obnovitev stanje

Po aktiviranju aplikacije MVVMcross poskuša obnoviti stanje ViewModela. Vendar pa se lahko natančna metoda za obnovo stanja razlikuje glede na platformo in različico MVVMcross. Na splošno se metoda `reloadState` uporablja za rehidracijo vidnega modela s shranjenim stanjem [3].

Platform-specifični premisleki

Vsaka platforma, ki jo podpira MVVMcross, obravnava nagnjenje drugače:

- Windows Phone: Ogrsstoning se obravnava prek dogodkov strani, kot sta `onnavigatedTo` in` onNavigatedFrom`. MVVMcross ponuja mehanizme za varčevanje in obnovo stanja med temi dogodki, vendar bo morda potrebna dodatna nastavitev, da se zagotovi pravilno obnovo stanja [4] [5].
- Android: MVVMcross obravnava nagrobništvo s prihrankom in obnovitvijo stanja ViewModel, ko se aplikacija ustavi ali nadaljuje. Vendar pa se lahko pojavijo težave, če se zaostanek razčisti ali če navigacijski parametri niso pravilno shranjeni [6].

Izzivi in ​​rešitve

Ravnanje nagrobnikov v MVVMcrossu je lahko izziv, še posebej pri krmarjenju s parametri. Ključnega pomena je shranjevanje navigacijskih parametrov skupaj s stanjem ViewModel, da se zagotovi pravilno obnovo stanja aplikacije [6] [9]. Poleg tega lahko uporaba knjižnic pomoči ali rešitve po meri poenostavi postopek varčevanja in obnavljanja na različnih platformah [5] [8].

Če povzamemo, MVVMcross ponuja močan okvir za ravnanje z nagrobnikom s prihrankom in obnovitvijo stanja ViewModel. Vendar pa zahteva skrbno izvajanje in upoštevanje nihanj, specifičnih za platformo, da se zagotovi brezhibno obnovo aplikacij.

Navedbe:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[2] https://www.mvvmcross.com/mvvmcross-51-release/
[3] https://stackoverflow.com/questions/29372480/mvvmcross-viewModel-life-cycle
[4] https://stackoverflow.com/questions/16023307/mvvmcross-and-tombstoning
[5] https://www.kenneth-truyers.net/2013/03/13/Tombstoning-made-easy-in-windows-phone-mvvm/
[6] https://github.com/mvvmcross/mvvmcross/isissue/834
[7] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md
[8] https://jesseliberty.com/2011/04/08/Tombstoning-and-mvvm/
[9] https://github.com/mvvmcross/mvvmcross/isissue/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/