Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Cum funcționează tombstoning în mvvmcross


Cum funcționează tombstoning în mvvmcross


Tombstoning în MVVMcross se referă la procesul de salvare și restabilire a stării unui ViewModel atunci când o aplicație este suspendată sau încheiată din cauza condițiilor de memorie scăzute, un scenariu comun în platformele mobile precum Windows Phone și Android. MVVMcross oferă mecanisme pentru a gestiona acest proces în mod eficient.

Construcție și ciclu de viață

MVVMCross ViewModels sunt instantanee folosind un container IOC, care injectează dependențe în ViewModel. Ciclul de viață al unui ViewModel din MVVMCross include mai multe metode cheie:

- Construcție: ViewModel este creat cu dependențe injectate prin intermediul containerului IOC.
- init (): inițializează ViewModel cu parametri de navigare.
- ReloadState (): restabilește starea ViewModel după tombstoning.
- Start (): Apelat când inițializarea și rehidratarea sunt complete [3].

Starea de salvare

Când o aplicație este tombstoned, MVVMcross apelează la metoda `SaveStateToBundle` de pe ViewModel. Această metodă vă permite să salvați starea ViewModel prin stocarea datelor într -un `IMVXBundle`. Este recomandabil să utilizați serializarea JSON pentru stocarea datelor complexe [1].

Restaurarea stării

După ce aplicația este reactivată, MVVMcross încearcă să restabilească starea ViewModel. Cu toate acestea, metoda exactă pentru restabilirea stării poate varia în funcție de platforma și versiunea MVVMCross. În general, metoda „reîncărcare” este utilizată pentru rehidratarea ViewModel cu starea salvată [3].

Considerații specifice platformei

Fiecare platformă susținută de MVVMCross se ocupă diferit de tombstonament:

- Windows Phone: Tombstoning este gestionat prin evenimente de pagină precum `onnavigatedto` și` onnavigatedFrom`. MVVMcross oferă mecanisme de salvare și restaurare a stării în timpul acestor evenimente, dar poate necesita o configurație suplimentară pentru a asigura restabilirea corectă a stării [4] [5].
- Android: MVVMcross se ocupă de tombstonament prin salvarea și restabilirea stării ViewModel atunci când aplicația este întreruptă sau reluată. Cu toate acestea, pot apărea probleme în cazul în care backstack -ul este șters sau dacă parametrii de navigare nu sunt salvați în mod corespunzător [6].

Provocări și soluții

Manevrarea tombstoningului în MVVMcross poate fi dificilă, mai ales atunci când navigați cu parametri. Este crucial să salvați parametrii de navigare împreună cu starea ViewModel pentru a asigura restabilirea corectă a stării aplicației [6] [9]. În plus, utilizarea bibliotecilor de ajutor sau a soluțiilor personalizate poate simplifica procesul de salvare și restabilire a stării pe diferite platforme [5] [8].

În rezumat, MVVMCross oferă un cadru robust pentru gestionarea tombstonarii prin salvarea și restabilirea stării de vizualizare. Cu toate acestea, necesită o implementare atentă și luarea în considerare a nuanțelor specifice platformei pentru a asigura o recuperare a aplicației fără probleme.

Citări:
[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/