Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Tombstoning ทำงานอย่างไรใน mvvmcross


Tombstoning ทำงานอย่างไรใน mvvmcross


Tombstoning ใน MVVMcross หมายถึงกระบวนการประหยัดและกู้คืนสถานะของ ViewModel เมื่อแอปพลิเคชันถูกระงับหรือยกเลิกเนื่องจากเงื่อนไขหน่วยความจำต่ำสถานการณ์ทั่วไปในแพลตฟอร์มมือถือเช่น Windows Phone และ Android MVVMCROSS ให้กลไกในการจัดการกระบวนการนี้อย่างมีประสิทธิภาพ

การก่อสร้างและวงจรชีวิต

MVVMCROSS ViewModels ถูกสร้างอินสแตนซ์โดยใช้คอนเทนเนอร์ IOC ซึ่งฉีดพึ่งพาเข้าไปใน ViewModel วงจรชีวิตของ ViewModel ใน MVVMcross มีวิธีการสำคัญหลายประการ:

- การก่อสร้าง: ViewModel ถูกสร้างขึ้นด้วยการพึ่งพาที่ฉีดผ่านคอนเทนเนอร์ IOC
- init (): เริ่มต้น ViewModel ด้วยพารามิเตอร์การนำทาง
- RELODSTATE (): คืนสถานะของ ViewModel หลังจาก Tombstoning
- เริ่มต้น (): เรียกว่าเมื่อเริ่มต้นและการคืนสภาพเสร็จสมบูรณ์ [3]

สถานะการบันทึก

เมื่อแอปพลิเคชันถูก tombstoned MVVMCROSS เรียกใช้วิธี `Savestatetobundle` บน ViewModel วิธีนี้ช่วยให้คุณสามารถบันทึกสถานะของ ViewModel ของคุณโดยการจัดเก็บข้อมูลใน `IMVXBundle ' ขอแนะนำให้ใช้การทำให้เป็นอนุกรม JSON สำหรับการจัดเก็บข้อมูลที่ซับซ้อน [1]

การกู้คืนสถานะ

หลังจากที่แอปพลิเคชันถูกเปิดใช้งานใหม่ MVVMCROSS พยายามกู้คืนสถานะของ ViewModel อย่างไรก็ตามวิธีการที่แน่นอนสำหรับการกู้คืนสถานะอาจแตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มและเวอร์ชันของ MVVMcross โดยทั่วไปวิธี `reloadstate` ใช้เพื่อคืนความชุ่มชื้นให้กับ ViewModel ด้วยสถานะที่บันทึกไว้ [3]

ข้อควรพิจารณาเฉพาะแพลตฟอร์ม

แต่ละแพลตฟอร์มที่รองรับโดย MVVMcross จัดการ Tombstoning แตกต่างกัน:

- Windows Phone: Tombstoning ได้รับการจัดการผ่านกิจกรรมหน้าเช่น `onnavigatedto` และ` onnavigated จาก ' MVVMCROSS ให้กลไกในการบันทึกและกู้คืนสถานะในระหว่างเหตุการณ์เหล่านี้ แต่อาจต้องมีการตั้งค่าเพิ่มเติมเพื่อให้แน่ใจว่าการฟื้นฟูสถานะที่เหมาะสม [4] [5]
- Android: MVVMCROSS จัดการ Tombstoning โดยการบันทึกและกู้คืนสถานะ ViewModel เมื่อแอปพลิเคชันถูกหยุดหรือกลับมาทำงานต่อ อย่างไรก็ตามปัญหาสามารถเกิดขึ้นได้หากการล้างกระเป๋าหลังหรือหากพารามิเตอร์การนำทางไม่ได้บันทึกไว้อย่างเหมาะสม [6]

ความท้าทายและการแก้ปัญหา

การจัดการ Tombstoning ใน 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/