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

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

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

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

Спасибо!

Ответ 1

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

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

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

Application.Activated. Событие args для этого события теперь содержит свойство 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 for Fast Application Switching, представленной Адиной Труфинеску, в которой содержится более подробная информация о FAS, которая определенно помогла мне начните.

/Крис

Ответ 2

Если вы обновляетесь из обычного приложения для надписи в Windows Phone 7.0, единственное, что вам нужно изменить, это проверить на e.IsApplicationInstancePreserved в событии Application_Activated - если для этого свойства установлено значение true, это означает, что вы не нужно регидратировать из IsolStorage/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();
    }
}

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