MvvmCross ViewModel cachowanie i ponowna inicjalizacja

Muszę być w stanie przechwycić strukturę i wykonać ponowną inicjalizację, gdy ViewModel jest ponownie ładowany z pamięci podręcznej. Ponieważ ViewModel nie jest odtwarzany, nie mogę używać metod Init (), MvxViewModel.InitFromBundle ani MvxViewModel.ReloadFromBundle.

Próbuję debugować sytuację, w której kliknięcie przycisku Wstecz przywraca ViewModel z niespójnym stanem. Pomocny byłby jakiś rodzaj MvxViewModel.OnReloading ().

Czy można to zrobić w wersji 3?

EDYTOWAĆ:

Załóżmy, że mam FirstPageViewModel, który udostępnia polecenie, aby przejść do SecondPageViewModel. W oparciu o to, co obserwuję, jeśli klikniesz przycisk Wstecz symulatora, podczas gdy na SecondPageView, FirstPageViewModel nie zostanie skonstruowany. Zamiast tego jest pobierany, jak sądzę, z jakiejś pamięci podręcznej, a następnie związany z Widokiem. Ta pamięć podręczna jest prawdopodobnie implementacją pamięci podręcznej IMvxSingleViewModel.

Zatem regularny przepływ po konstrukcji ViewModel, w której wywołujesz Init (), InitFromBundle () i ReloadFromBundle (), nie ma zastosowania w tym scenariuszu. Innymi słowy, potrzebuję sposobu, aby ponownie zainicjować ViewModel, niezależnie od tego, czy był on po prostu nowo skonstruowany, czy wskrzeszony z pamięci podręcznej. Jeśli to pierwsze, mogę użyć metody Init (). Jeśli to ostatnie jest prawdą, nie ma sposobu, aby to zrobić w samym ViewModelu.

To jest problem:

Mam instancję ICollectionService, która jest przekazywana z FirstViewModel do SecondViewModel. FirstView zawiera również ListView, który jest powiązany z tą usługą CollectionService. Ponieważ usługa CollectionService nie jest silnie wpisana, mogę ją przekazać i użyć odpowiedniego szablonu elementu do renderowania jej elementów w widoku.

Przed wyświetleniem SecondViewModel FirstViewModel pobiera niektóre dane zdalne i wypełnia usługę CollectionService. Po wyświetleniu SecondViewModel jego widok wyświetla dane z usługi CollectionService przy użyciu innego szablonu elementu. Jeśli jednak przejdę do tyłu, ponieważ FirstViewModel nadal odwołuje się do usługi CollectionService, FirstView wyświetli dane, które były używane przez SecondViewModel, chyba że FirstViewModel mógł zostać ponownie zainicjowany, usuwając usługę CollectionService w tym procesie. Może podejście jest złe, ale to jest sedno mojego problemu.

Nie wiem, czy platforma robi różnicę, ponieważ spodziewałbym się tego samego zachowania w Windows Phone i iOS, ponieważ ta inicjalizacja nastąpi w module Core. Niemniej jednak są to obserwacje na Androida.

TIA.

questionAnswers(2)

yourAnswerToTheQuestion