Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Sự khác biệt chính giữa MVVMCROSS 4.X và 3.X về vòng đời ViewModel


Sự khác biệt chính giữa MVVMCROSS 4.X và 3.X về vòng đời ViewModel


Các phiên bản MVVMCROSS 3.x và 4.x có một số khác biệt về vòng đời ViewModel, chủ yếu tập trung vào cách các chế độ xem được xây dựng, khởi tạo và quản lý.

MVVMCROSS 3.x

Trong MVVMCROSS 3.x, vòng đời ViewModel theo một chuỗi được gọi là CIRS: xây dựng, init (), readoadstate () và start (). Trình tự này được sử dụng để khởi tạo và quản lý ViewModels. Đây là một sự cố:

- Xây dựng: ViewModel được khởi tạo bằng cách sử dụng thùng chứa IOC, cho phép tiêm phụ thuộc. Đây là nơi các dịch vụ và các phụ thuộc khác được đưa vào ViewModel.
- init (): Phương thức này được sử dụng để khởi tạo các tham số điều hướng. Nó được gọi sau khi xây dựng và là nơi bạn thường thiết lập bất kỳ dữ liệu hoặc tham số ban đầu nào được truyền cho ViewModel.
- ReloadState (): Phương thức này chịu trách nhiệm bù nước trạng thái của ViewModel sau khi Tombstoning, xảy ra khi ứng dụng bị treo và sau đó được nối lại do điều kiện bộ nhớ thấp.
- start (): Phương thức này được gọi khi khởi tạo và bù nước hoàn tất. Nó thường được sử dụng để bắt đầu bất kỳ hoạt động hoặc nhiệm vụ đang diễn ra.

MVVMCROSS 4.x

MVVMCROSS 4.X tiếp tục sử dụng trình tự CIRS nhưng giới thiệu một số thay đổi và cải tiến:

- Xây dựng vẫn giống nhau, sử dụng IOC để tiêm phụ thuộc.
- init () vẫn khởi tạo các tham số điều hướng nhưng giờ đây linh hoạt hơn, cho phép các tham số điều hướng gõ.
- ReloadState () tiếp tục xử lý việc bù nước trạng thái sau khi Tombstoning.
- start () tương tự nhưng có thể được sử dụng ít thường xuyên hơn do giới thiệu các phương pháp khởi tạo không đồng bộ hơn.

Một thay đổi đáng kể trong MVVMCROSS 4.x là sự hỗ trợ liên tục cho các tham số điều hướng đánh máy, cho phép truyền dữ liệu có cấu trúc hơn giữa các chế độ xem. Ngoài ra, MVVMCROSS 4.x đặt nền tảng cho các cải tiến trong tương lai trong điều hướng và quản lý vòng đời, được tăng cường hơn nữa trong MVVMCROSS 5.x.

Sự khác biệt chính

- Các tham số điều hướng: MVVMCROSS 3.x chuyển các tham số điều hướng trực tiếp đến phương thức `init ()`, trong khi MVVMCROSS 4.X hỗ trợ các tham số điều hướng được đánh máy, giúp dễ dàng chuyển dữ liệu phức tạp giữa các chế độ xem.
- Tính linh hoạt của vòng đời: MVVMCROSS 4.x cung cấp sự linh hoạt hơn trong việc xử lý vòng đời ViewModel, đặc biệt là giới thiệu các phương pháp khởi tạo không đồng bộ.
- Hỗ trợ về Tombstoning: Cả hai phiên bản đều hỗ trợ Tombstoning, nhưng MVVMCROSS 4.X tiếp tục tinh chỉnh quá trình này, đảm bảo rằng ViewModels có thể lưu và khôi phục trạng thái của chúng một cách hiệu quả.

Nhìn chung, MVVMCROSS 4.x xây dựng dựa trên nền tảng được thiết lập trong 3.x bằng cách tăng cường điều hướng, quản lý vòng đời và tính linh hoạt trong việc xử lý dữ liệu phức tạp và các hoạt động không đồng bộ.

Trích dẫn:
[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
[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