3
在MvvmCross ViewModel中,Init方法用於任何屏幕初始化。但是,直到Init完全完成後纔會繪製屏幕。我有一些沉重的操作(分貝搜索)。所以理想情況下,我想用進度條繪製屏幕,然後運行我的初始化方法,最後更新屏幕。我將把這些操作放在MvvmCross ViewModel中?在MvvmCross中放置初始化操作的位置
在MvvmCross ViewModel中,Init方法用於任何屏幕初始化。但是,直到Init完全完成後纔會繪製屏幕。我有一些沉重的操作(分貝搜索)。所以理想情況下,我想用進度條繪製屏幕,然後運行我的初始化方法,最後更新屏幕。我將把這些操作放在MvvmCross ViewModel中?在MvvmCross中放置初始化操作的位置
我會做一個Service
重物。在這種服務,我要麼:
Done
事件,你可以在你的ViewModel
傾聽,並從那裏填充屬性數據的方法。或
雖然此服務運行並提取數據,但我會在數據加載時在屏幕上顯示其他內容。這可能是一些緩存數據或進度條或其他內容。
+1 - 儘管有時您需要小心處理完成的事件,因爲如果您從不取消訂閱,這可能導致泄漏 - 在這種情況下,使用消息訂閱可以更好地利用弱引用。 – Stuart
但是什麼觸發了服務開始它的操作?如果我從init觸發它,不要有同樣的問題(因爲它不是異步)? –
如果你使用後臺線程,你不會有這個問題... – Cheesebaron