Захоронение
Дополнительные материалы к занятию можно скачать здесь.
Вложенные файлы: Presentation_9.pptx
Вложенные папки: Lecture_9_1
Перед программистами постоянно стоит задача решения проблемы многозадачности. Переключение потоков и совместное использование общих ресурсов, таких как экран или звуковая плата является нетривиальной задачей. Одним из способов организации одновременной работы нескольких приложений в Windows Phone 7 является так называемое "захоронение".
Для реализации многозадачности в настольных компьютерах используется панель задач. Реализации панели задач в Windows Phone 7 в силу ряда причин является нецелесообразным, вместо этого несколько процессов запускается с помощью стека. Концепция стека заключается в следующем. При нажатии на кнопку Start текущее приложение помещается в стек для того, чтобы могло запуститься новое приложение. При нажатии на кнопку Back текущее приложение завершается и из стека извлекается предыдущее приложение. В целях экономии системных ресурсов сделано так, чтобы приложение, помещенное в стек переставало работать. При извлечении приложения из стека оно начинает работать с нуля. В этом заключается суть захоронения.
Когда приложение вызывается с экрана запуска, говорят, что оно "запущено". При нажатии на кнопку Back оно "закрывается". Если приложение выполняется, и пользователь при этом нажимает на кнопку Start про приложение говорят, что оно "деактивировано". Это состояние "захоронения". В тот момент когда пользователь возвращается к приложению, выводя его из состояния захоронения, происходит "активация" приложения.
Проиллюстрируем сказанное на следующем примере. Мы разработаем приложение Silverlight Windows Phone, в котором подсчитывается количество нажатий мышью на экран и при каждом нажатии на экране отображается случайный город (В работе использовался фрагмент кода из книги Ч. Петзолдьда, 2010).
Создаем новый проект XNA Lecture_9_1.
Добавляем ссылку на библиотеку Microsoft.Phone:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace Lecture_9_1 { public partial class MainPage : PhoneApplicationPage { Random rand = new Random(); int numTaps = 0; public MainPage() { InitializeComponent(); UpdatePageTitle(numTaps); } protected override void OnManipulationStarted(ManipulationStartedEventArgs args) { UpdatePageTitle(++numTaps); args.Complete(); base.OnManipulationStarted(args); } void UpdatePageTitle(int numTaps) { string[] picture = new string[] { "Москва", "Париж", "Уфа", "Токио", "Нью-Йорк", "Рим", "Мадрид", "Хельсинки", "Вена", "Улан-Батор" }; int n = picture.Length - 1; string str = picture[rand.Next(n)]; ApplicationTitle.Text = "Случайный город ... " + str; PageTitle.Text = String.Format("Вы нажали {0} раз(а)", numTaps); } } }Листинг .
Запускаем приложение. При каждом нажатии на экран появляется случайный город.
Нажимаем на кнопку Back. Приложение захоранивается.