Восстановление Приложения При Запуске Со Стартового Экрана Без Потери Предыдущего Состояния В Wp8

В Windows Phone 8 появилась такая замечательная функция, как быстрое возобновление состояния приложения после его перезапуска из списка приложений или через плитку «Домой» с полным сохранением состояния и истории навигации внутри приложения (для возможности последующей навигации).

с помощью кнопки «Назад» как будто приложение никуда не свернулось).

Если вы пробовали использовать приложения Windows 8 и Магазина Windows, возможно, вы заметили, что при запуске приложения с начального экрана вы возвращаетесь туда, где вы его оставили.

Именно такого результата мы добьемся в нашем приложении для Windows Phone 8. Итак, начнем.



WMAppManifest.xml

Сначала давайте откроем файл манифеста нашего приложения (щелкнув его в обозревателе решений и выбрав «Просмотреть исходный код» в английской версии Visual Studio).

Все, что нам нужно сделать, это добавить к элементу Дефолттаск атрибут под названием Политика активации со смыслом Резюме .

Так:

  
  
  
  
   

<DefaultTask Name="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume" />

По большому счету этим изменением мы добились того, что наше приложение при перезапуске через стартовый экран/список приложений начало восстанавливаться к прежнему состоянию плюс переход на страницу, указанную в атрибуте NavigationPage элемента DefaultTask манифеста нашего приложения.

.

Сразу после этого история навигации нашего приложения выглядит так:

Восстановление приложения при запуске со стартового экрана без потери предыдущего состояния в WP8

Это немного ускоряет перезапуск, не позволяя системе очистить состояние и запустить приложение с нуля.

Но мы идем дальше.



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; }

И все, цель достигнута.

Теперь после возобновления работы приложения при его перезапуске пользователь попадет именно туда, где он оставил приложение.



Восстановление приложения при запуске со стартового экрана без потери предыдущего состояния в WP8

Всего за считанные минуты мы сделали наше приложение намного приятнее в использовании.

Также можно поиграться и, например, при возобновлении очистить историю кнопки «Назад», сохранив при этом только состояние текущей страницы.

Для этого вам необходимо добавить в обработчик событий Navigated следующую строку:

if (e.NavigationMode == NavigationMode.Reset) while (RootFrame.RemoveBackEntry() != null);



Восстановление приложения при запуске со стартового экрана без потери предыдущего состояния в WP8

На этом все, спасибо за внимание.



Примечание

В оригинальной статье не хватает некоторых моментов официальная документация , что я посчитал уместным дополнить на суд читателей.

Теги: #windowsphone 8 #многозадачность #возобновить приложение #.

NET #Разработка мобильных приложений #Разработка Windows Phone

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.