Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak działa Tombstoning w Mvvmcross


Jak działa Tombstoning w Mvvmcross


Tombstoning w MVVMCROSS odnosi się do procesu zapisywania i przywracania stanu ViewModel, gdy aplikacja jest zawieszona lub zakończona z powodu niskich warunków pamięci, wspólnego scenariusza na platformach mobilnych, takich jak Windows Phone i Android. MVVMCROSS zapewnia mechanizmy skutecznego obsługi tego procesu.

Konstrukcja i cykl życia

Mvvmcross ViewModels są tworzone za pomocą pojemnika MKOl, który wstrzykuje zależności do ViewModel. Kręg cyklu życia ViewModel w MVVMCROSS zawiera kilka kluczowych metod:

- Konstrukcja: ViewModel jest tworzony z zależnościami wstrzykiwani za pośrednictwem kontenera MKOl.
- init (): inicjuje viewModel z parametrami nawigacji.
- ReloadState (): Przywraca stan ViewModel po nagrobku.
- start (): wywoływane po inicjalizacji i nawodnienie są kompletne [3].

Stan oszczędzania

Gdy aplikacja jest nagrobana, MVVMCROSS wywołuje metodę „savestateToBundle” na viewModel. Ta metoda pozwala zapisać stan ViewModel, przechowując dane w „imvxbundle”. Wskazane jest użycie serializacji JSON do przechowywania złożonych danych [1].

Stan przywracania

Po reaktywowaniu aplikacji MVVMcross próbuje przywrócić stan ViewModel. Jednak dokładna metoda stanu przywracania może się różnić w zależności od platformy i wersji MVVMCROSS. Ogólnie rzecz biorąc, metoda „RELOODSTATE” służy do nawodnienia ViewModel z zapisanym stanem [3].

Rozważania dotyczące platformy

Każda platforma obsługiwana przez MVVMCROSS obsługuje Tombstoning inaczej:

- Windows Phone: Tombstoning jest obsługiwany za pośrednictwem zdarzeń strony, takich jak „onnavigatoTto” i „onnavigatedFrom”. MVVMCROSS zapewnia mechanizmy oszczędzania i przywracania stanu podczas tych zdarzeń, ale może wymagać dodatkowej konfiguracji, aby zapewnić właściwe przywrócenie stanu [4] [5].
- Android: Mvvmcross obsługuje nagrobek, oszczędzając i przywracając stan ViewModel, gdy aplikacja jest zatrzymana lub wznowiona. Jednak problemy mogą pojawić się, jeśli tyłek jest wyczyszczony lub jeśli parametry nawigacyjne nie są odpowiednio zapisane [6].

Wyzwania i rozwiązania

Obsługa nagrobka w MVVMCROSS może być trudna, szczególnie podczas nawigacji z parametrami. Ważne jest, aby zapisać parametry nawigacji wraz ze stanem ViewModel, aby zapewnić prawidłowe przywrócenie stanu aplikacji [6] [9]. Ponadto korzystanie z bibliotek pomocniczych lub niestandardowych rozwiązań może uprościć proces zapisywania i przywracania stanu na różnych platformach [5] [8].

Podsumowując, MVVMCROSS zapewnia solidne ramy do obsługi nagrobka poprzez oszczędzanie i przywracanie stanu ViewModel. Wymaga to jednak starannego wdrożenia i uwzględnienia niuansów specyficznych dla platformy, aby zapewnić bezproblemowe odzyskiwanie aplikacji.

Cytaty:
[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-andbstoning
[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://jeseliberty.com/2011/04/08/tombstoning-and-mvvm/
[9] https://github.com/mvvmcross/mvvmcross/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/