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

chr*_*lch 1 mvvmcross windows-phone-8

我试图了解MvvmCross如何管理Windows Phone上的内存.

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

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

基督教

Stu*_*art 6

在MvvmCross中:

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

如果您想对"页面级"视图的"视图"可见时进行更多"主动"监视,则需要监视"页面级"视图特定事件,例如:

  • ViewDidAppear\ ViewDidDisappear\ removeFromParentViewController(IOS)
  • OnResume\ OnPause`OnFinish`(Droid)
  • OnNavigatedTo`OnNavigatedFrom`(Windows)

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

更新:我在博客上发表了一篇文章并发表了一个样本 - 请参阅http://slodge.blogspot.co.uk/2013/11/n42-is-my-viewmodel-visible-can-i-kill.html

有关此内容的更多信息: