Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Apa perbedaan utama antara mvvmcross 4.x dan 3.x mengenai siklus hidup viewmodel


Apa perbedaan utama antara mvvmcross 4.x dan 3.x mengenai siklus hidup viewmodel


Versi MVVMCross 3.x dan 4.x memiliki beberapa perbedaan mengenai siklus hidup viewmodel, terutama berpusat di sekitar bagaimana viewmodels dibangun, diinisialisasi, dan dikelola.

mvvmcross 3.x

Dalam MVVMCross 3.x, siklus hidup ViewModel mengikuti urutan yang dikenal sebagai CIR: Konstruksi, Init (), ReloadState (), dan Start (). Urutan ini digunakan untuk menginisialisasi dan mengelola viewmodels. Inilah gangguan:

- Konstruksi: Viewmodel dipakai menggunakan wadah IOC, memungkinkan untuk injeksi ketergantungan. Di sinilah layanan dan dependensi lainnya disuntikkan ke dalam viewmodel.
- init (): Metode ini digunakan untuk menginisialisasi parameter navigasi. Ini dipanggil setelah konstruksi dan di mana Anda biasanya akan mengatur data awal atau parameter yang diteruskan ke ViewModel.
- ReloadState (): Metode ini bertanggung jawab untuk merehidrasi keadaan ViewModel setelah Tombstoning, yang terjadi ketika aplikasi ditangguhkan dan kemudian dilanjutkan karena kondisi memori yang rendah.
- start (): Metode ini dipanggil ketika inisialisasi dan rehidrasi selesai. Ini biasanya digunakan untuk memulai operasi atau tugas yang sedang berlangsung.

mvvmcross 4.x

MVVMCross 4.x terus menggunakan urutan CIRS tetapi memperkenalkan beberapa perubahan dan peningkatan:

- Konstruksi tetap sama, menggunakan IOC untuk injeksi ketergantungan.
- init () Masih menginisialisasi parameter navigasi tetapi sekarang lebih fleksibel, memungkinkan untuk parameter navigasi yang diketik.
- ReloadState () terus menangani rehidrasi negara setelah Tombstoning.
- start () serupa tetapi dapat digunakan lebih jarang karena pengenalan metode inisialisasi yang lebih asinkron.

Perubahan signifikan dalam MVVMCross 4.x adalah dukungan berkelanjutan untuk parameter navigasi yang diketik, yang memungkinkan data yang lebih terstruktur yang lewat di antara viewmodels. Selain itu, MVVMCross 4.x meletakkan dasar untuk peningkatan navigasi dan manajemen siklus hidup di masa mendatang, yang selanjutnya ditingkatkan dalam MVVMCross 5.x.

Perbedaan utama

- Parameter Navigasi: MVVMCROSS 3.X melewati parameter navigasi langsung ke metode `init ()`, sedangkan MVVMCross 4.x mendukung parameter navigasi yang diketik, membuatnya lebih mudah untuk melewati data kompleks antara viewmodels.
- Fleksibilitas siklus hidup: MVVMCross 4.x memberikan lebih banyak fleksibilitas dalam menangani siklus hidup viewmodel, terutama dengan pengenalan metode inisialisasi asinkron.
- Dukungan Tombstoning: Kedua versi mendukung Tombstoning, tetapi MVVMCross 4.x terus memperbaiki proses ini, memastikan bahwa viewmodels dapat secara efektif menyelamatkan dan memulihkan keadaan mereka.

Secara keseluruhan, MVVMCross 4.x dibangun di atas yayasan yang ditetapkan dalam 3.x dengan meningkatkan navigasi, manajemen siklus hidup, dan fleksibilitas dalam menangani data yang kompleks dan operasi asinkron.

Kutipan:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/49322704/mvvmcross-view-model-lifecycle-restore-not-working
[3] https://stackoverflow.com/questions/15961664/viewModel-lifecycle-when-does-it-get-disposed
[4] https://stackoverflow.com/questions/71959649/does-mvvmcross-have-a-built-in--formsage-for-viewmodel-tell-view-when-viewappea
[5] https://stackoverflow.com/questions/29372480/mvvmcross-viewModel-life-cycle
[6] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[7] https://www.mvmcross.com/documentation/tutorials/tipcalc/a-note-about-views-and-viewModels
[8] https://www.ramotion.com/blog/what-is-mvvm/
[9] https://www.mvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[11] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[12] https://github.com/mvvmcross/mvvmcross/issues/2738