В Windows Phone 8 появилась такая замечательная функция, как быстрое возобновление состояния приложения после его перезапуска из списка приложений или через плитку «Домой» с полным сохранением состояния и истории навигации внутри приложения (для возможности последующей навигации).
с помощью кнопки «Назад» как будто приложение никуда не свернулось).
Если вы пробовали использовать приложения Windows 8 и Магазина Windows, возможно, вы заметили, что при запуске приложения с начального экрана вы возвращаетесь туда, где вы его оставили.
Именно такого результата мы добьемся в нашем приложении для Windows Phone 8. Итак, начнем.
WMAppManifest.xml
Сначала давайте откроем файл манифеста нашего приложения (щелкнув его в обозревателе решений и выбрав «Просмотреть исходный код» в английской версии Visual Studio).Все, что нам нужно сделать, это добавить к элементу Дефолттаск атрибут под названием Политика активации со смыслом Резюме .
Так:
По большому счету этим изменением мы добились того, что наше приложение при перезапуске через стартовый экран/список приложений начало восстанавливаться к прежнему состоянию плюс переход на страницу, указанную в атрибуте NavigationPage элемента DefaultTask манифеста нашего приложения.<DefaultTask Name="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume" />
.
Сразу после этого история навигации нашего приложения выглядит так:
Это немного ускоряет перезапуск, не позволяя системе очистить состояние и запустить приложение с нуля.
Но мы идем дальше.
App.xaml.cs
Теперь мы должны отменить этот ненужный переход на главную страницу после перезапуска приложения.Для этого нам нужно немного отредактировать файл App.xaml.cs (вы можете заметить, что SDK по каким-то причинам не хочет работать так, как описано на MSDN, поэтому пойдем немного другим путем).
Во-первых, давайте добавим частное нестатическое поле типа System.Boolean в наш класс App и назовем его _reset. private bool _reset;
Следующий шаг — найти частный метод InitializePhoneApplication (он автоматически создается шаблоном по умолчанию) и настроить инициализацию RootFrame, определив наши обратные вызовы для событий Navigating и Navigated. RootFrame.Navigating += RootFrame_Navigating;
RootFrame.Navigated += RootFrame_Navigated;
Последним шагом будет изменение тел методов-обработчиков этих событий.
private void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
{
if (_reset && e.IsCancelable && e.Uri.OriginalString == "/MainPage.xaml")
{
e.Cancel = true;
reset = false;
}
}
private void RootFrame_Navigated(object sender, NavigationEventArgs e)
{
_reset = e.NavigationMode == NavigationMode.Reset;
}
И все, цель достигнута.
Теперь после возобновления работы приложения при его перезапуске пользователь попадет именно туда, где он оставил приложение.
Всего за считанные минуты мы сделали наше приложение намного приятнее в использовании.
Также можно поиграться и, например, при возобновлении очистить историю кнопки «Назад», сохранив при этом только состояние текущей страницы.
Для этого вам необходимо добавить в обработчик событий Navigated следующую строку: if (e.NavigationMode == NavigationMode.Reset) while (RootFrame.RemoveBackEntry() != null);
На этом все, спасибо за внимание.
Примечание
В оригинальной статье не хватает некоторых моментов официальная документация , что я посчитал уместным дополнить на суд читателей.Теги: #windowsphone 8 #многозадачность #возобновить приложение #.
NET #Разработка мобильных приложений #Разработка Windows Phone
-
Компания "З"
19 Oct, 24 -
Игра Ai War: Fleet Command
19 Oct, 24 -
Сайт Наноисследований Gosuslugi.ru.
19 Oct, 24 -
Введение В Итераторы Javascript В Es6
19 Oct, 24 -
6 Игр За 6 Недель – Игра Четвертая
19 Oct, 24