MVVMCross 버전 3.x 및 4.x는 뷰 모델 수명주기와 관련하여 몇 가지 차이점을 가지고 있으며, 주로 뷰 모델이 구성, 초기화 및 관리되는 방식을 중심으로합니다.
mvvmcross 3.x
MVVMCross 3.X에서 ViewModel 라이프 사이클은 CIRS : Construction, init (), repoadstate () 및 start ()로 알려진 시퀀스를 따릅니다. 이 순서는 뷰 모델을 초기화하고 관리하는 데 사용됩니다. 다음은 고장입니다.
- 구성 : 뷰 모델은 IOC 컨테이너를 사용하여 인스턴스화하여 의존성 주입이 가능합니다. 이곳에서 서비스 및 기타 종속성이 뷰 모델에 주입됩니다.
-ING () :이 메소드는 탐색 매개 변수를 초기화하는 데 사용됩니다. 시공 후 호출되며 일반적으로 뷰 모델로 전달되는 초기 데이터 또는 매개 변수를 설정하는 곳입니다.
-ReloadState () :이 메소드는 묘비 후 뷰 모델의 상태를 재수 화하는 데 도움이되며, 이는 앱이 중단 된 후 메모리 조건이 낮아서 재개 될 때 발생합니다.
- 시작 () :이 메소드는 초기화 및 재수 화가 완료되면 호출됩니다. 일반적으로 진행중인 운영 또는 작업을 시작하는 데 사용됩니다.
mvvmcross 4.x
MVVMCross 4.X는 CIRS 시퀀스를 계속 사용하지만 몇 가지 변경 사항과 개선 사항을 소개합니다.
- 의존성 주입을 위해 IOC를 사용하여 구성은 동일하게 유지됩니다.
-ING ()는 여전히 내비게이션 매개 변수를 초기화하지만 이제 더 유연하여 유형화 된 탐색 매개 변수를 허용합니다.
-ReloadState ()는 묘비 후 상태 재수 화를 계속 처리합니다.
-Start ()는 비슷하지만 비동기 초기화 방법의 도입으로 인해 덜 자주 사용될 수 있습니다.
MVVMCross 4.X의 상당한 변화는 유형화 된 내비게이션 매개 변수에 대한 지속적인 지원으로, 뷰 모델 사이에 더 많은 구조화 된 데이터를 전달할 수 있습니다. 또한 MVVMCross 4.X는 MVVMCross 5.X에서 더욱 강화되는 내비게이션 및 수명주기 관리의 향후 개선을위한 토대를 마련합니다.
주요 차이점
- 내비게이션 매개 변수 : MVVMCross 3.X는 내비게이션 매개 변수를`init ()`메소드로 직접 전달하는 반면 MVVMCross 4.X는 입력 된 탐색 매개 변수를 지원하므로 뷰 모델간에 복잡한 데이터를 더 쉽게 전달할 수 있습니다.
- 라이프 사이클 유연성 : MVVMCROSS 4.X는 특히 비동기 초기화 방법을 도입하여 ViewModel 라이프 사이클을 처리하는 데 더 많은 유연성을 제공합니다.
- 묘비 지원 : 두 버전 모두 묘비를 지원하지만 MVVMCross 4.x는이 프로세스를 계속 개선하여 뷰 모델이 상태를 효과적으로 저장하고 복원 할 수 있도록합니다.
전반적으로 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-ave-built-inmessage-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.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