2013-07-25 30 views
3

在MvvmCross ViewModel中,Init方法用於任何屏幕初始化。但是,直到Init完全完成後纔會繪製屏幕。我有一些沉重的操作(分貝搜索)。所以理想情況下,我想用進度條繪製屏幕,​​然後運行我的初始化方法,最後更新屏幕。我將把這些操作放在MvvmCross ViewModel中?在MvvmCross中放置初始化操作的位置

回答

4

我會做一個Service重物。在這種服務,我要麼:

  • 使觸發一個Done事件,你可以在你的ViewModel傾聽,並從那裏填充屬性數據的方法。

  • 讓你等待在後臺線程,當它返回您填充屬性異步方法。

雖然此服務運行並提取數據,但我會在數據加載時在屏幕上顯示其他內容。這可能是一些緩存數據或進度條或其他內容。

+1

+1 - 儘管有時您需要小心處理完成的事件,因爲如果您從不取消訂閱,這可能導致泄漏 - 在這種情況下,使用消息訂閱可以更好地利用弱引用。 – Stuart

+0

但是什麼觸發了服務開始它的操作?如果我從init觸發它,不要有同樣的問題(因爲它不是異步)? –

+3

如果你使用後臺線程,你不會有這個問題... – Cheesebaron

相關問題