Tôi cần có khả năng chặn khung và thực hiện quá trình khởi tạo lại khi ViewModel đang được tải lại từ bộ nhớ cache. Vì ViewModel không được tạo lại, tôi không thể sử dụng phương thức Init(), MvxViewModel.InitFromBundle, cũng như MvxViewModel.ReloadFromBundle.MvvmCross ViewModel caching và tái khởi tạo
Tôi đang cố gắng gỡ lỗi một tình huống trong đó nhấp vào nút quay lại khôi phục Chế độ xem có trạng thái không nhất quán. Một số loại MvxViewModel.OnReloading() sẽ giúp ích.
Có cách nào để thực hiện việc này trong v3 không?
EDIT:
Giả sử tôi có FirstPageViewModel đó cho thấy một lệnh để điều hướng đến SecondPageViewModel. Dựa trên những gì tôi đang quan sát, nếu bạn nhấp vào nút quay lại của trình mô phỏng trong khi trên SecondPageView, FirstPageViewModel không được xây dựng. Thay vào đó, nó được lấy ra, tôi tin rằng, từ một số bộ nhớ cache, sau đó bị ràng buộc để xem. Bộ nhớ cache này có thể là cài đặt bộ nhớ cache IMvxSingleViewModel.
Do đó, luồng thông thường sau khi xây dựng ViewModel, nơi bạn gọi Init(), InitFromBundle() và ReloadFromBundle() không áp dụng trong trường hợp này. Nói cách khác, tôi cần một cách để khởi tạo lại một ViewModel bất kể nó chỉ mới được xây dựng hay nó được hồi sinh từ bộ nhớ cache. Nếu trước đây, tôi có thể sử dụng phương thức Init(). Nếu sau này là đúng, không có cách nào để làm điều này trong chính ViewModel.
Đây là vấn đề:
Tôi có một thể hiện của ICollectionService được truyền từ FirstViewModel để SecondViewModel. FirstView cũng chứa một ListView được liên kết với CollectionService này. Vì CollectionService không được gõ mạnh nên tôi có thể truyền nó xung quanh và sử dụng mẫu mục thích hợp để hiển thị các mục của nó trong khung nhìn.
Trước khi hiển thị SecondViewModel, FirstViewModel truy xuất một số dữ liệu từ xa và điền vào CollectionService. Khi SecondViewModel được hiển thị, khung nhìn của nó hiển thị dữ liệu từ CollectionService bằng cách sử dụng một mẫu mục khác. Tuy nhiên, nếu tôi điều hướng trở lại, vì FirstViewModel vẫn đang tham chiếu đến CollectionService, FirstView sẽ hiển thị dữ liệu đã được SecondViewModel sử dụng trừ khi FirstViewModel có thể được khởi tạo lại, xóa Bộ sưu tập trong quá trình. Có lẽ cách tiếp cận là sai nhưng đây là điểm mấu chốt của vấn đề của tôi.
Tôi không biết liệu nền tảng có tạo sự khác biệt hay không, vì tôi mong đợi hành vi tương tự trên Windows Phone và iOS khi việc khởi tạo lại này sẽ xảy ra trong mô-đun chính. Tuy nhiên đây là những quan sát trên Android.
TIA.
Nó không hoàn toàn rõ ràng với tôi những gì bạn đang hỏi, "bộ đệm" là gì, cái gì không nhất quán trong trạng thái của bạn, bạn đang làm gì hoặc bạn đang cố gắng làm gì. Một ví dụ về luồng người dùng và/hoặc một số mã ví dụ về vấn đề có thể hữu ích. – Stuart
Stuart, cảm ơn phản hồi. Tôi vừa chỉnh sửa câu hỏi của mình với thông tin bổ sung. –