Захоронение
Дополнительные материалы к занятию можно скачать
здесь.
Вложенные файлы: 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. Приложение захоранивается.




. Снова запускаем наше 
