Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon อะไรคือความแตกต่างหลักระหว่าง MVVMCROSS 4.x และ 3.x เกี่ยวกับวงจรชีวิต ViewModel


อะไรคือความแตกต่างหลักระหว่าง MVVMCROSS 4.x และ 3.x เกี่ยวกับวงจรชีวิต ViewModel


MVVMCROSS เวอร์ชัน 3.x และ 4.x มีความแตกต่างหลายประการเกี่ยวกับวงจรชีวิต ViewModel โดยเน้นไปที่วิธีการสร้าง ViewModels เริ่มต้นและจัดการ

mvvmcross 3.x

ใน MVVMCROSS 3.x วงจรชีวิต ViewModel จะติดตามลำดับที่เรียกว่า CIRS: การก่อสร้าง, init (), realoadState () และ start () ลำดับนี้ใช้เพื่อเริ่มต้นและจัดการ ViewModels นี่คือรายละเอียด:

- การก่อสร้าง: ViewModel เป็นอินสแตนซ์โดยใช้คอนเทนเนอร์ IOC ทำให้สามารถฉีดพึ่งพาได้ นี่คือที่บริการและการพึ่งพาอื่น ๆ ถูกฉีดเข้าไปใน ViewModel
- init (): วิธีนี้ใช้เพื่อเริ่มต้นพารามิเตอร์การนำทาง มันถูกเรียกหลังจากการก่อสร้างและเป็นที่ที่คุณมักจะตั้งค่าข้อมูลเริ่มต้นหรือพารามิเตอร์ใด ๆ ที่ส่งผ่านไปยัง ViewModel
- ReloadState (): วิธีนี้มีหน้าที่รับผิดชอบในการคืนสถานะของ ViewModel หลังจาก Tombstoning ซึ่งเกิดขึ้นเมื่อแอปถูกระงับและกลับมาทำงานต่อเนื่องจากเงื่อนไขหน่วยความจำต่ำ
- start (): วิธีนี้เรียกว่าเมื่อเริ่มต้นและการคืนสภาพเสร็จสมบูรณ์ โดยทั่วไปแล้วจะใช้เพื่อเริ่มต้นการดำเนินงานหรืองานต่อเนื่อง

mvvmcross 4.x

MVVMCROSS 4.x ยังคงใช้ลำดับ CIRS แต่แนะนำการเปลี่ยนแปลงและการปรับปรุงบางอย่าง:

- การก่อสร้างยังคงเหมือนเดิมโดยใช้ IOC สำหรับการฉีดพึ่งพา
- init () ยังคงเริ่มต้นพารามิเตอร์การนำทาง แต่ตอนนี้มีความยืดหยุ่นมากขึ้นทำให้สามารถใช้พารามิเตอร์การนำทางที่พิมพ์ได้
- RELODSTATE () ยังคงจัดการกับการคืนสภาพของรัฐหลังจาก TOMBSTONING
- start () คล้ายกัน แต่อาจใช้น้อยลงเนื่องจากการแนะนำวิธีการเริ่มต้นแบบอะซิงโครนัสมากขึ้น

การเปลี่ยนแปลงที่สำคัญใน MVVMCROSS 4.x คือการสนับสนุนอย่างต่อเนื่องสำหรับพารามิเตอร์การนำทางพิมพ์ซึ่งช่วยให้ข้อมูลที่มีโครงสร้างมากขึ้นผ่าน ViewModels นอกจากนี้ MVVMCROSS 4.x วางรากฐานสำหรับการปรับปรุงในอนาคตในการนำทางและการจัดการวงจรชีวิตซึ่งได้รับการปรับปรุงเพิ่มเติมใน MVVMCROSS 5.X

ความแตกต่างที่สำคัญ

- พารามิเตอร์การนำทาง: MVVMCROSS 3.x ผ่านพารามิเตอร์การนำทางโดยตรงไปยังเมธอด `init ()` ในขณะที่ MVVMCROSS 4.x รองรับพารามิเตอร์การนำทางที่พิมพ์ออกมาทำให้ง่ายต่อการส่งข้อมูลที่ซับซ้อนระหว่าง ViewModels
- ความยืดหยุ่นของวงจรชีวิต: MVVMCROSS 4.x ให้ความยืดหยุ่นมากขึ้นในการจัดการชีวิต ViewModel โดยเฉพาะอย่างยิ่งกับการแนะนำวิธีการเริ่มต้นแบบอะซิงโครนัส
- การสนับสนุน Tombstoning: ทั้งสองเวอร์ชันรองรับ Tombstoning แต่ MVVMCROSS 4.x ยังคงปรับแต่งกระบวนการนี้อย่างต่อเนื่องเพื่อให้มั่นใจว่า ViewModels สามารถประหยัดและฟื้นฟูสถานะได้อย่างมีประสิทธิภาพ

โดยรวมแล้ว MVVMCROSS 4.x สร้างขึ้นบนรากฐานที่จัดตั้งขึ้นใน 3.x โดยการเพิ่มการนำทางการจัดการวงจรชีวิตและความยืดหยุ่นในการจัดการข้อมูลที่ซับซ้อนและการดำเนินงานแบบอะซิงโครนัส

การอ้างอิง:
[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-message-for-viewmodel-to-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.mvvmcross.com/documentation/tutorials/tipcalc/a-note-about-views-and-viewmodels
[8] https://www.ramotion.com/blog/what-is-mvvm/
[9] https://www.mvvmcross.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