如何在MvvmCross中释放视图和视图模型?

时间:2013-11-06 16:00:49

标签: windows-phone-8 mvvmcross

我试图了解MvvmCross如何在Windows Phone上管理内存。

我尝试将我的视图和viewmodel标记为IDisposable,但是从不调用Dispose方法。

我需要做的是确保在我的应用在后台运行位置跟踪时可以释放一些资源。

基督教

1 个答案:

答案 0 :(得分:6)

在MvvmCross:

  • 每个View引用其ViewModel
  • 平台特定的操作系统决定何时取消引用View - 当发生这种情况时,它通常会调用View上的方法(但这取决于视图是页面,选项卡,弹出窗口,对话框,还是自定义控制等)
  • .Net或Mono垃圾收集器然后决定何时从内存中收集视图和ViewModel

如果您希望对“页面级”视图的“视图”可见时进行更多“主动”监视,则需要监视“页面级”特定于视图的事件,如:

  • ViewDidAppear \ ViewDidDisappear \ {{{}}(iOS)
  • removeFromParentViewController \ OnResume`OnFinish`(Droid)
  • OnPause`OnNavigatedFrom`(Windows)

然后可以在OnNavigatedTo上的自定义界面上轻松调用这些事件的通用形式(如果您愿意,这可以是IDisposable - 这是您的应用程序代码)。

更新:我在博客上发布了相关内容并发布了一个示例 - 请参阅http://slodge.blogspot.co.uk/2013/11/n42-is-my-viewmodel-visible-can-i-kill.html

有关此内容的更多信息: