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 مع معلمات التنقل.
- RELOADSTATE (): يستعيد حالة ViewModel بعد Tombstoning.
- start (): تسمى عند التهيئة و rehydration كاملة [3].

إنقاذ الدولة

عندما يتم تطبيق التطبيق ، يستدعي MVVMCross طريقة "SaveStatetObundle" على ViewModel. تتيح لك هذه الطريقة حفظ حالة ViewModel الخاصة بك عن طريق تخزين البيانات في `imvxbundle". من المستحسن استخدام تسلسل JSON لتخزين البيانات المعقدة [1].

استعادة الحالة

بعد إعادة تنشيط التطبيق ، يحاول MVVMcross استعادة حالة ViewModel. ومع ذلك ، يمكن أن تختلف الطريقة الدقيقة لاستعادة الحالة اعتمادًا على النظام الأساسي وإصدار MVVMCROSS. بشكل عام ، يتم استخدام طريقة `adadstate` لإعادة ترطيب iewmodel مع الحالة المحفوظة [3].

اعتبارات خاصة منصة

كل منصة تدعمها MVVMcross تتولى Tombstoning بشكل مختلف:

- Windows Phone: يتم التعامل مع Tombstoning من خلال أحداث صفحات مثل `onnavigatedto` و `onnavigatedfrom`. يوفر 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]
[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/