Tombstoning in MVVMCross verwijst naar het proces van het opslaan en herstellen van de status van een weergavemodel wanneer een applicatie wordt geschorst of beëindigd vanwege lage geheugenomstandigheden, een gemeenschappelijk scenario in mobiele platforms zoals Windows Phone en Android. MVVMCross biedt mechanismen om dit proces effectief te verwerken.
Constructie en levenscyclus
MVVMCross ViewModels worden geïnstantieerd met behulp van een IOC -container, die afhankelijkheden in het ViewModel injecteert. De levenscyclus van een weergavemodel in MVVMCross bevat verschillende belangrijke methoden:
- Constructie: het ViewModel wordt gemaakt met afhankelijkheden geïnjecteerd via de IOC -container.
- init (): initialiseert het ViewModel met navigatieparameters.
- ReloadState (): herstelt de status van het ViewModel na Tombstoning.
- start (): opgeroepen wanneer initialisatie en rehydratatie voltooid zijn [3].
Saving State
Wanneer een applicatie is ingevoegd, roept MVVMCross de methode `savestateToBundle` op het ViewModel aan. Met deze methode kunt u de status van uw ViewModel opslaan door gegevens op te slaan in een `imvxbundle '. Het is raadzaam om JSON -serialisatie te gebruiken voor het opslaan van complexe gegevens [1].
Restoring State
Nadat de aanvraag is gereactiveerd, probeert MVVMCross de status van het ViewModel te herstellen. De exacte methode voor het herstellen van de staat kan echter variëren, afhankelijk van het platform en de versie van MVVMCross. Over het algemeen wordt de methode `ReloadState` gebruikt om het ViewModel met de opgeslagen status te rehydrateren [3].
platformspecifieke overwegingen
Elk platform ondersteund door MVVMCross verwerkt Tombstoning anders:
- Windows Phone: Tombstoning wordt afgehandeld via pagina -evenementen zoals `onnavigatedto` en` onnavigated from`. MVVMCROSS biedt mechanismen om de staat op te slaan en te herstellen tijdens deze gebeurtenissen, maar het kan een aanvullende opstelling vereisen om de juiste statusherstel te garanderen [4] [5].
- Android: MVVMCross verwerkt Tombstoning door de ViewModel -status op te slaan en te herstellen wanneer de aanvraag wordt gepauzeerd of hervat. Er kunnen echter problemen optreden als de backstack wordt gewist of als navigatieparameters niet correct worden opgeslagen [6].
Uitdagingen en oplossingen
Het omgaan met grafstoning in MVVMCross kan een uitdaging zijn, vooral bij het navigeren met parameters. Het is cruciaal om navigatieparameters te redden samen met de ViewModel -status om te zorgen voor een correct herstel van de status van de toepassing [6] [9]. Bovendien kan het gebruik van helperbibliotheken of aangepaste oplossingen het proces van het opslaan en herstellen van de staat op verschillende platforms [5] [8] vereenvoudigen.
Samenvattend biedt MVVMCross een robuust raamwerk voor het afhandelen van Tombstoning door ViewModel State te redden en te herstellen. Het vereist echter een zorgvuldige implementatie en overweging van platformspecifieke nuances om naadloos herstel van applicaties te garanderen.
Citaten:[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-window-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-roelase/