MVVMCROSS: n hautaaminen tarkoittaa näkymämallin tilan tallentamista ja palauttamista, kun sovellus keskeytetään tai lopetetaan matalan muistiolosuhteiden vuoksi, yhteinen skenaario mobiiliympäristöissä, kuten Windows Phone ja Android. MVVMCross tarjoaa mekanismeja tämän prosessin käsittelemiseksi tehokkaasti.
Rakentaminen ja elinkaari
MVVMCross ViewModels on toteutettu käyttämällä IOC -säilöä, joka injektoi riippuvuuksia ViewModeliin. Näkymämallin elinkaari MVVMCrossissa sisältää useita keskeisiä menetelmiä:
- Rakentaminen: ViewModel on luotu riippuvuuksilla, jotka on injektoitu IOC -säiliön kautta.
- init (): Alustaa ViewModel navigointiparametreilla.
- ReloadState (): Palauttaa ViewModel -tilan haudan jälkeen.
- Käynnistä (): Kutsutaan kun alustaa ja nesteytymistä ovat täydellisiä [3].
Säästötila
Kun sovellus hautataan, MVVMCross kutsuu näkymämallin "SavestateBundle" -menetelmää. Tämän menetelmän avulla voit tallentaa näkymäsi tilan tallentamalla tietoja "imvxbundle" -laitteeseen. On suositeltavaa käyttää JSON -sarjoittamista monimutkaisten tietojen tallentamiseen [1].
Palauttamisvaltio
Kun sovellus on aktivoitu uudelleen, MVVMCross yrittää palauttaa ViewModel -tilan. Tarkka tilan palauttamismenetelmä voi kuitenkin vaihdella MVVMCrossin alustan ja version mukaan. Yleensä `ReloadState` -menetelmää käytetään ViewModelin nesteyttämiseen tallennetun tilan kanssa [3].
alustakohtaiset näkökohdat
Jokainen MVVMCROSS -käsittelemä alusta käsittelee toisistaan eri tavalla:
- Windows Phone: Tombstoning käsitellään sivutapahtumien, kuten `onnavigatedTo` ja` onnavigated from`, kautta. MVVMCross tarjoaa mekanismeja tilaa säästämään ja palauttamaan näiden tapahtumien aikana, mutta se voi vaatia lisäasetuksia asianmukaisen tilan palauttamisen varmistamiseksi [4] [5].
- Android: MVVMCross käsittelee hautauskivyn tallentamalla ja palauttamalla ViewModel -tilan, kun sovellus keskeytetään tai jatkuu. Aiheita voi kuitenkin esiintyä, jos takaosa tyhjennetään tai jos navigointiparametreja ei tallenneta oikein [6].
haasteet ja ratkaisut
Haudan käsittely MVVMCrossissa voi olla haastavaa, etenkin kun navigoi parametreilla. Navigointiparametrit on tärkeää tallentaa ViewModel -tilan kanssa sovelluksen tilan oikean palauttamisen varmistamiseksi [6] [9]. Lisäksi auttajakirjastojen tai räätälöityjen ratkaisujen käyttäminen voi yksinkertaistaa tilan tallentamis- ja palauttamisprosessia eri alustojen välillä [5] [8].
Yhteenvetona voidaan todeta, että MVVMCROSS tarjoaa vankan kehyksen haudan käsittelemiseksi tallentamalla ja palauttamalla ViewModel State. Se vaatii kuitenkin huolellista toteuttamista ja alustakohtaisten vivahteiden huomioon ottamista saumattoman sovellusten palautuksen varmistamiseksi.
Viittaukset:[1] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[2] https://www.mvvmcross.com/mvvmcross-51-release/
[3] https://stackoverflow.com/questions/29372480/mvmcross-viewModel-life-cycle
.
.
[6] https://github.com/mvvmcross/mvvmcross/issues/834
[7] https://github.com/mvvmcross/mvvmcross/blob/developop/changelog.md
[8] https://jesseliberty.com/2011/04/08/TOMBSTONING-DVVM/
[9] https://github.com/mvvmcross/mvvmcross/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/