2013-11-06 2 views
1

Я пытаюсь понять, как MvvmCross управляет памятью на Windows Phone.Как открывается вид и режимы просмотра в MvvmCross?

Я пытаюсь пометить свой вид и viewmodel как IDisposable, но метод Dispose никогда не вызывается.

Что мне нужно сделать, это убедиться, что я могу освободить некоторые ресурсы, пока мое приложение отслеживает отслеживание местоположения в фоновом режиме.

Christian

+0

Другие идеи там http://stackoverflow.com/questions/15961664/viewmodel-lifecycle-when-does-it-get-disposed –

ответ

6

В MvvmCross:

  • каждый View ссылается на свой ViewModel
  • платформа-specifiic операционная система решает, когда разыменовать View - когда это происходит, как правило, вызывает метод на View (но это зависит от того, является ли представление страницей, вкладкой, вылетом, диалогом, настраиваемым элементом управления и т. д.)
  • . Сборщик Net или Mono Garbage Collector затем решает, когда следует собирать как Views, так и ViewModels из памяти

Если вы хотите сделать более «активный» мониторинг, когда View видна на «уровне страницы» Views, то вам необходимо контролировать «на уровне страницы» Просмотр конкретных событий, как:

  • ViewDidAppear \ ViewDidDisappear \ removeFromParentViewController (прошивкой)
  • OnResume \ OnPause `OnFinish` (Droid)
  • OnNavigatedTo` OnNavigatedFrom` (Windows)

Обобщенная форма этих событий затем может быть легко вызвана на пользовательский интерфейс на вашем ViewModel (это может быть IDisposable, если вы хотите - это ваш код приложения).

Update: Я писал о этом и опубликовал образец - см http://slodge.blogspot.co.uk/2013/11/n42-is-my-viewmodel-visible-can-i-kill.html

Там немного больше информации об этом в:

Смежные вопросы