У меня есть приложение для Windows Phone 7, как убедиться, что оно поддерживает быстрое переключение задач? - PullRequest
11 голосов
/ 18 августа 2011

Что мне нужно как разработчику, чтобы убедиться, что мои приложения поддерживают быстрое переключение задач?

В идеале я ищу, как проверочный список разработчика, что нужно и что нельзя делать.

Я занимался поиском, но все, что я нашел, заставило меня почувствовать, что я что-то упустил, как правило, больше маркетинга, а не шагов разработчика и технических деталей.

Спасибо!

Ответы [ 2 ]

14 голосов
/ 18 августа 2011

Большая часть работы для FAS выполняется для вас автоматически.Главное, что нужно иметь в виду, это то, что Tombstoning означает для вашего приложения.При возобновлении через FAS вы не должны ничего раскрашивать, поэтому обычно нет необходимости восстанавливать состояние модели представления или что-то в этом роде.Есть несколько мест, для которых вам нужно будет написать код - вот краткий контрольный список.

PhoneApplicationPage.OnNavigatingFrom - Поэкспериментируйте с элементами управления, которые вы используете, чтобы убедиться, что FAS восстанавливаетданные, которые были там для вас.Например, элемент управления TextBox правильно запоминает все, что вы в него вставили, но MediaElement не запоминает видео или положение его воспроизводящей головки.

PhoneApplicationPage.OnNavigatedTo - Все, что вы сохранили в OnNavigatingFrom, необходимо повторно применить здесь, в OnNavigatedTo.Например, перезагрузите источник видео в MediaElement, измените положение видео и запустите его снова.

Application.Activation - Аргументы события для этого события теперь содержат свойство IsApplicationInstancePreserved.Это свойство возвращает TRUE, когда приложение возвращается через FAS, или FALSE, когда приложение возвращается из Tombstoning.Итак, у вас есть код примерно такой:

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    if (!e.IsApplicationInstancePreserved)
    {
        RestoreStateFromTombstone();
    }
}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    SaveStateForTombstone();
}

Это самое важное.Я еще не проводил никакого реального стресс-тестирования инфраструктуры FAS, чтобы увидеть, где она сломается, но это хорошо послужило мне для экспериментов, которые я провел до сих пор.

Для получения дополнительной информации, есть короткое видео с конференции MIX11 под названием Get Ready для быстрого переключения приложений , представленное Адиной Труфинеску, которое дает более подробную информацию о FAS, что определенно помогло мне начать работу.

/ Крис

0 голосов
/ 29 августа 2011

Если вы обновляете обычное надгробное приложение в Windows Phone 7.0, единственное, что вам нужно будет изменить, - это проверка e.IsApplicationInstancePreserved в событии Application_Activation - если для этого свойства установлено значение true, это означает, что вы не нужно регидрировать из IsolatedStorage / State. Как упоминалось в превосходном ответе Криса Кенига:

//Windows Phone 7.0
private void Application_Activated(object sender, ActivatedEventArgs e)
{
    RestoreStateFromTombstone();
}

//Windows Phone 7.1/7.5/Mango
private void Application_Activated(object sender, ActivatedEventArgs e)
{
    if (!e.IsApplicationInstancePreserved)
    {
        RestoreStateFromTombstone();
    }
}

Симптомами этого являются то, что ваши привязки данных больше не работают после переключения приложений с помощью многозадачности (поскольку вы воссоздаете свои состояния объектов, поэтому привязка данных больше не действительна)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...