MVVMCrossバージョン3.xおよび4.xには、ViewModelライフサイクルに関していくつかの違いがあり、主にViewModelの構築、初期化、および管理されている方法を中心にしています。
mvvmcross 3.x
MVVMCross 3.xでは、ViewModelライフサイクルは、CIRS:Construction、init()、reloadstate()、およびstart()として知られるシーケンスに従います。このシーケンスは、ビューモデルの初期化と管理に使用されます。これが故障です:
- 構築:ViewModelはIOCコンテナを使用してインスタンス化され、依存関係の噴射が可能になります。これは、サービスやその他の依存関係がViewModelに注入される場所です。
-init():この方法は、ナビゲーションパラメーターの初期化に使用されます。建設後に呼び出され、通常、ViewModelに渡された初期データまたはパラメーターを設定します。
-RELOADSTATE():このメソッドは、トゥームストンニング後にViewModelの状態を再水抑制する責任があります。
-Start():この方法は、初期化と再水分化が完了したときに呼び出されます。通常、進行中の操作またはタスクを開始するために使用されます。
mvvmcross 4.x
MVVMCross 4.XはCIRSシーケンスを引き続き使用していますが、いくつかの変更と改善を導入します。
- 依存関係噴射にIOCを使用して、建設は同じままです。
-init()はまだナビゲーションパラメーターを初期化しますが、より柔軟で、型付けされたナビゲーションパラメーターが可能になりました。
-RELOADSTATE()は、墓石後の状態の再水和を処理し続けます。
-Start()は類似していますが、より非同期初期化方法が導入されているため、あまり頻繁に使用できません。
MVVMCross 4.Xの大幅な変更は、型と型付けのナビゲーションパラメーターの継続的なサポートであり、ビューモデル間でより構造化されたデータを通過させることができます。さらに、MVVMCross 4.xは、MVVMCross 5.xでさらに強化されているナビゲーションとライフサイクル管理の将来の改善の基礎を築きます。
###キーの違い
- ナビゲーションパラメーター:MVVMCross 3.xはナビゲーションパラメーターを `init()`メソッドに直接通過しますが、MVVMCross 4.xはタイプ付きナビゲーションパラメーターをサポートし、ビューモデル間の複雑なデータを容易に渡すことができます。
- ライフサイクルの柔軟性: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-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