Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip „Tombstoning“ veikia mvvmcross


Kaip „Tombstoning“ veikia mvvmcross


„MVVMCross“ antkapis reiškia „ViewModel“ taupymo ir atkūrimo procesą, kai programa sustabdoma arba nutraukiama dėl mažos atminties sąlygų, tai yra įprastas scenarijus mobiliosiose platformose, tokiose kaip „Windows Phone“ ir „Android“. MVVMCross pateikia mechanizmus, leidžiančius efektyviai valdyti šį procesą.

statyba ir gyvavimo ciklas

„MVVMCross ViewModels“ yra akimirksniu naudojant IOC konteinerį, kuris įjungiamas priklausomybėms į „ViewModel“. „ViewModel“ gyvenimo ciklas MVVMCross apima keletą pagrindinių metodų:

- Konstrukcija: „ViewModel“ sukuriamas priklausomybėmis, įšvirkštomis per IOC konteinerį.
- init (): inicijuoja „ViewModel“ su navigacijos parametrais.
- „ReloadState“ (): Atkuriama „ViewModel“ būsena po antkapio.
- Pradėti (): vadinama, kai yra baigti inicijavimas ir rehidratacija [3].

Saving State

Kai programa yra antkapinė, „Mvvmcross“ vadina „SavestateToBundle“ metodu „ViewModel“. Šis metodas leidžia išsaugoti „ViewModel“ būseną, saugant duomenis „imvxbundle“. Sudėtingų duomenų saugojimui patartina naudoti JSON serializaciją [1].

Atkurti būseną

Po to, kai programa bus suaktyvinta, MVVMCROSS bando atkurti „ViewModel“ būseną. Tačiau tikslus būsenos atkūrimo metodas gali skirtis priklausomai nuo platformos ir MVVMCross versijos. Apskritai, „perkrovos“ metodas yra naudojamas pertvarkyti vaizdo modelį su išsaugota būsena [3].

konkrečios platformos aspektai

Kiekviena platforma, kurią palaiko „MVVMCross“, skirtingai tvarko antkapinius: „Tombstoning“:

- „Windows Phone“: „Tombstoning“ tvarkomas per puslapio įvykius, tokius kaip „onnavigatedto“ ir „onnavigatedFrom“. „MVVMCross“ pateikia mechanizmus, kaip išsaugoti ir atkurti būseną šių įvykių metu, tačiau tam gali prireikti papildomos sąrankos, kad būtų užtikrintas tinkamas būsenos atkūrimas [4] [5].
- „Android“: „MVVMCross“ tvarko antkapinius, išsaugodami ir atkuriant „ViewModel“ būseną, kai programa pristabdoma ar atnaujinama. Tačiau problemos gali kilti, jei užkulisinis užfiksuotas arba jei navigacijos parametrai nėra tinkamai išsaugoti [6].

iššūkiai ir sprendimai

„MVVMCross“ tvarkymas „MVVMCross“ gali būti sudėtingas, ypač naršant su parametrais. Naršymo parametrai kartu su „ViewModel“ būsena yra labai svarbu, kad būtų užtikrintas teisingas programos būsenos atkūrimas [6] [9]. Be to, naudodamiesi pagalbinėmis bibliotekomis ar pasirinktiniais sprendimais, galite supaprastinti būsenos taupymo ir atkūrimo procesą skirtingose ​​platformose [5] [8].

Apibendrinant galima pasakyti, kad „MVVMCross“ pateikia tvirtą pagrindą, skirtą tvarkyti antkapinius, taupant ir atkuriant „ViewModel“ būseną. Tačiau norint užtikrinti sklandų programų atkūrimą, reikia kruopščiai įgyvendinti ir atsižvelgti į konkrečias platformai skirtus niuansus.

Citatos:
[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/issues/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/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/