1

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

我尝试将我的视图和视图模型标记为 IDisposable,但从未调用过 Dispose 方法。

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

基督教

4

1 回答 1

6

在 MvvmCross 中:

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

如果您想对“页面级”视图何时可见视图进行更多“主动”监控,那么您需要监控“页面级”特定于视图的事件,例如:

  • ViewDidAppear\ ViewDidDisappear\ removeFromParentViewController(iOS)
  • OnResume\ OnPause`OnFinish` (机器人)
  • OnNavigatedTo`OnNavigatedFrom` (Windows)

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

更新:我已经写了一篇关于这个的博客并发布了一个示例 - 请参阅http://slodge.blogspot.co.uk/2013/11/n42-is-my-viewmodel-visible-can-i-kill.html

有更多关于这方面的信息:

于 2013-11-06T16:22:43.053 回答