Tombstoning di MVVMCross mengacu pada proses menyimpan dan memulihkan keadaan viewmodel ketika aplikasi ditangguhkan atau diakhiri karena kondisi memori yang rendah, skenario umum dalam platform seluler seperti Windows Phone dan Android. MVVMCross menyediakan mekanisme untuk menangani proses ini secara efektif.
Konstruksi dan siklus hidup
MVVMCross ViewModels dipakai menggunakan wadah IOC, yang menyuntikkan dependensi ke dalam viewmodel. Siklus hidup viewmodel di MVVMCross mencakup beberapa metode utama:
- Konstruksi: ViewModel dibuat dengan dependensi yang disuntikkan melalui wadah IOC.
- init (): Menginisialisasi ViewModel dengan parameter navigasi.
- ReloadState (): Mengembalikan keadaan viewmodel setelah Tombstoning.
- start (): dipanggil saat inisialisasi dan rehidrasi selesai [3].
status penghematan
Ketika aplikasi ditombson, MVVMCross memanggil metode `saveStateToBundle` pada viewmodel. Metode ini memungkinkan Anda untuk menyimpan status viewmodel Anda dengan menyimpan data di `imvxbundle`. Dianjurkan untuk menggunakan serialisasi JSON untuk menyimpan data kompleks [1].
memulihkan keadaan
Setelah aplikasi diaktifkan kembali, MVVMCross berupaya mengembalikan keadaan viewmodel. Namun, metode yang tepat untuk memulihkan keadaan dapat bervariasi tergantung pada platform dan versi MVVMCross. Secara umum, metode `ReloadState` digunakan untuk merehidrasi viewmodel dengan keadaan yang disimpan [3].
Pertimbangan khusus platform
Setiap platform yang didukung oleh MVVMCross menangani Tombstoning secara berbeda:
- Windows Phone: Tombstoning ditangani melalui acara halaman seperti `onnavigatedto` dan` onNnavigatedFrom`. MVVMCross menyediakan mekanisme untuk menghemat dan memulihkan keadaan selama acara ini, tetapi mungkin memerlukan pengaturan tambahan untuk memastikan restorasi negara yang tepat [4] [5].
- Android: MVVMCross menangani Tombstoning dengan menyimpan dan memulihkan keadaan ViewModel ketika aplikasi dijeda atau dilanjutkan. Namun, masalah dapat muncul jika backstack dihapus atau jika parameter navigasi tidak disimpan dengan benar [6].
Tantangan dan solusi
Menangani Tombstoning di MVVMCross bisa menantang, terutama saat menavigasi dengan parameter. Sangat penting untuk menyimpan parameter navigasi bersama dengan keadaan ViewModel untuk memastikan pemulihan yang benar dari keadaan aplikasi [6] [9]. Selain itu, menggunakan perpustakaan penolong atau solusi khusus dapat menyederhanakan proses menyimpan dan memulihkan keadaan di berbagai platform [5] [8].
Singkatnya, MVVMCross menyediakan kerangka kerja yang kuat untuk menangani Tombstoning dengan menyimpan dan memulihkan keadaan ViewModel. Namun, ini membutuhkan implementasi dan pertimbangan nuansa spesifik platform untuk memastikan pemulihan aplikasi yang mulus.
Kutipan:[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.mvmcross.com/mvvmcross-56-release/