Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Πώς λειτουργεί το Tombstoning στο mvvmcross


Πώς λειτουργεί το Tombstoning στο mvvmcross


Το Tombstoning στο MVVMCROSS αναφέρεται στη διαδικασία αποθήκευσης και αποκατάστασης της κατάστασης ενός προβολέα όταν μια εφαρμογή αναστέλλεται ή τερματίζεται λόγω των συνθηκών χαμηλής μνήμης, ενός κοινού σεναρίου σε κινητές πλατφόρμες όπως το Windows Phone και το Android. Το MVVMCROSS παρέχει μηχανισμούς για την αποτελεσματική διαχείριση αυτής της διαδικασίας.

Κατασκευή και κύκλος ζωής

Το MVVMCROSS ViewModels παρουσιάζεται χρησιμοποιώντας ένα δοχείο ΔΟΕ, το οποίο εισάγει εξαρτήσεις στο ViewModel. Ο κύκλος ζωής ενός ViewModel στο MVVMCross περιλαμβάνει αρκετές βασικές μεθόδους:

- Κατασκευή: Το ViewModel δημιουργείται με εξαρτήσεις που εγχέονται μέσω του δοχείου ΔΟΕ.
- init (): Αρχικοποιεί το ViewModel με παραμέτρους πλοήγησης.
- revoadState (): αποκαθιστά την κατάσταση του ViewModel μετά το Tombstoning.
- Start (): Ονομάζεται όταν ολοκληρώνεται η αρχικοποίηση και η επανυδάτωση [3].

Αποθήκευση κατάσταση

Όταν μια εφαρμογή είναι επιτυχημένη, το MVVMCROSS καλεί τη μέθοδο `savestatetobundle 'στο ViewModel. Αυτή η μέθοδος σάς επιτρέπει να αποθηκεύσετε την κατάσταση του ViewModel με την αποθήκευση δεδομένων σε ένα `imvxbundle '. Συνιστάται να χρησιμοποιείτε τη σειριοποίηση JSON για την αποθήκευση σύνθετων δεδομένων [1].

Αποκατάσταση της κατάστασης

Μετά την επανενεργοποίηση της εφαρμογής, η MVVMCross προσπαθεί να αποκαταστήσει την κατάσταση του ViewModel. Ωστόσο, η ακριβής μέθοδος για την αποκατάσταση της κατάστασης μπορεί να ποικίλει ανάλογα με την πλατφόρμα και την έκδοση του MVVMCross. Γενικά, η μέθοδος `revoadstate` χρησιμοποιείται για την επανυδάτωση του ViewModel με την αποθηκευμένη κατάσταση [3].

Ειδικές εκτιμήσεις πλατφόρμας

Κάθε πλατφόρμα που υποστηρίζεται από το MVVMCROSS χειρίζεται διαφορετικά το επιτύμβιο:

- Windows Phone: Το Tombstoning χειρίζεται τα συμβάντα σελίδας όπως το `onnavigatedto 'και το` onnavigated from'. Το MVVMCROSS παρέχει μηχανισμούς για την αποθήκευση και αποκατάσταση της κατάστασης κατά τη διάρκεια αυτών των συμβάντων, αλλά μπορεί να απαιτεί πρόσθετη εγκατάσταση για να εξασφαλιστεί η σωστή αποκατάσταση κατάστασης [4] [5].
- Android: Το MVVMCROSS χειρίζεται το Tombstoning με την αποθήκευση και την αποκατάσταση της κατάστασης του ViewModel όταν η εφαρμογή σταματά ή επαναλαμβάνεται. Ωστόσο, μπορεί να προκύψουν ζητήματα εάν το backstack έχει καθαριστεί ή εάν οι παραμέτρους πλοήγησης δεν αποθηκεύονται σωστά [6].

Προκλήσεις και λύσεις

Ο χειρισμός του επιτύμβου σε MVVMCROSS μπορεί να είναι προκλητική, ειδικά όταν πλοηγείται με παραμέτρους. Είναι σημαντικό να αποθηκεύσετε τις παραμέτρους πλοήγησης μαζί με την κατάσταση ViewModel για να εξασφαλίσετε τη σωστή αποκατάσταση της κατάστασης της εφαρμογής [6] [9]. Επιπλέον, η χρήση βοηθητικών βιβλιοθηκών ή προσαρμοσμένων λύσεων μπορεί να απλοποιήσει τη διαδικασία αποθήκευσης και αποκατάστασης κατάστασης σε διαφορετικές πλατφόρμες [5] [8].

Συνοπτικά, το MVVMCROSS παρέχει ένα ισχυρό πλαίσιο για το χειρισμό του Tombstoning με την αποθήκευση και την αποκατάσταση της πολιτείας ViewModel. Ωστόσο, απαιτεί προσεκτική εφαρμογή και εξέταση των ειδικών για την πλατφόρμα αποχρώσεις για να εξασφαλιστεί η απρόσκοπτη ανάκτηση εφαρμογών.

Αναφορές:
[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/