Материалы к модулю Вы можете скачать здесь.
В этом модуле вы узнаете, как описывать контракты в своих приложениях (например, контракт поиска(search)). Вы ознакомитесь с методикой обработки событий жизненного цикла приложений, чтобы пользователь мог эффективно переключаться между задачами.
Вам понадобится результат работы в предыдущем модуле, который находится в папке \Module_8_Assets\Starter
Приложения описывают контракты, чтобы сообщить Windows о том, какую функциональность они поддерживают. Контракты также позволяют приложениям использовать функционал друг друга: например, приложение для обработки текста может воспользоваться контрактом общего доступа (Share Contract), чтобы передать какой-либо текст приложению для работы с электронной почтой.
Модель WinRT-приложений предоставляет интерфейс, позволяющий использовать такие стандартные функции, как Поиск, Общий доступ и Параметры. Эти функции представлены в виде чудо-кнопок на соответствующей панели.
Чтобы отобразить панель чудо-кнопок, необходимо выполнить одно из следующих действий: провести пальцем от правого края экрана на устройстве с сенсорным экраном, либо на клавиатуре нажать Win+C, либо переместить указатель мыши в правый нижний угол экрана.
Рассмотрим как работает эта технология при передаче (sharing) веб-страницы по электронной почте с использованием Windows-приложений Internet Explorer и Mail (Почта).
Обратите внимание, что адрес сайта показан во всплывающем меню Общий доступ, и кроме того, из появляющегося списка можно выбрать приложение, которое может обработать выбранные данные (в данном случае адрес сайта).
Теперь, когда вы видели, как работают механизмы панели чудо-кнопок, можно рассмотреть, как ваши приложения могут взаимодействовать с этой панелью на основе использования контрактов. Контракт – декларация о намерениях – сообщает платформе Windows, что приложение обладает тем или иным функционалом.
| Контракты и расширения в приложениях | |
|---|---|
| App to App Picking contract | Контракт передачи из приложения в приложение |
| AutoPlay | Автозапуск |
| Background tasks | Фоновые задачи |
| Cached file updater | Контракт обновления кэшированных файлов |
| Camera settings | Параметры камеры |
| Contact picker | Окно выбора контактов |
| File activation | Активация файла |
| Game installer | Проводник игр |
| Play To contract | Контракт "Воспроизведение на устройстве" |
| Print task settings | Параметры задачи печати |
| Protocol activation | Активация протокола |
| Search contract | Контракт "Поиск" |
| Settings contract | Контракт "Параметры" |
| Share contract | Контракт "Общий доступ" |
| Account Picture Provider | Поставщик аватаров |
| SSL/certificates | SSL/сертификаты |
Чтобы узнать больше о контрактах и расширениях, посетите сайт
http://msdn.microsoft.com/en-us/library/windows/apps/hh464906.aspx
Рассмотрение всех поддерживаемых контрактов выходит за рамки данного курса, но стоит упомянуть о наиболее популярных и часто используемых контрактах.
Контракт "Поиск" (Search) позволяет с помощью кнопки поиска из панели чудо-кнопок, давать пользователю возможность осуществлять поиск по информации в вашем приложении (в этом модуле вы добавите контракт "Поиск" к приложению из примера).
Контракт "Параметры" (Settings) позволяет приложению вывести на экран свое окно настроек (предпочтений пользователя и т.д.) по нажатию на кнопку Параметры (Settings) в панели чудо-кнопок.
Контракт "Общий доступ" (Share) позволяет вашему приложению интегрироваться с дополнениями совместного использования. В результате ваше приложение может обмениваться данными (адресами сайтов, текстом и т.д.) с другими приложениями.
Контракты объявляются в манифесте приложения. Чтобы их редактировать, можно использовать встроенный редактор Visual Studio.
Пользовательский интерфейс приложений (Application UI) зависит от настроек значков, ориентации устройства в пространстве и Магазина Windows (Windows Store). Вы узнаете о Магазине Windows подробнее в девятом модуле.
Возможности ("Capabilities") имеют отношение к работе с сервисами системы и устройствами, о них вы можете узнать в Модуле 6.
Откройте выпадающее меню Доступные объявления. Появившийся список приведен ниже (он совпадает с таблицей, касающейся контрактов и расширений, рассмотренной выше):

В этом упражнении вы узнаете о реализации поискового контракта, который позволяет пользователям осуществлять поиск по содержимому приложения. Чтобы обеспечивать работу поискового контракта, нашему приложению надо реагировать на события, инициированные объектом SearchPane (Поисковая панель ).
app.start(). В этом коде выполняются следующие действия: получение ссылки на поисковую панель (панель чудо-кнопок), добавление подписчиков на события вызова поискового списка и вызова поисковых подсказок.
Код доступен в файле \Module_8_Assets\snippets\initialize.txt
function initialize(args) {
// reference the Search Pane object and register for handling search
var searchPane = Windows.ApplicationModel.Search.SearchPane.getForCurrentView();
// add event listeners for query and suggestions
searchPane.addEventListener("querysubmitted", handlingQuerySubmitted, false);
searchPane.addEventListener("suggestionsrequested",
handlingSuggestionRequest, false);
}
// TODO: This application has been newly launched. Initialize // your application here. initialize(args);
XmlHttpRequest. Код получится чуть более длинный, но вы получите больше возможностей для управления запросом и обработки ответа. В данном примере вы отправите запрос к сервису Wikipedia API, проверите значение ReadyState, которое сообщает об окончании выполнения запроса. Затем обработаете ответ, используя JSON.parse, и заполните список поисковых подсказок заголовками найденных изображений.
Код примера находится в файле \Module_8_Assets\snippets\queryhandlers.txt
function handlingQuerySubmitted(e) {
// Get the latest Data depending on search string
Data.groupSearch.title = e.queryText;
Data.getBySearch(Data.groupSearch);
// navigate back to start
var nav = WinJS.Navigation;
nav.navigate("/pages/groupeditems/groupedItems.html", null);
}
function handlingSuggestionRequest(e) {
handleSuggestionRequest(e.queryText, e.request);
}
function handleSuggestionRequest(queryText, suggestionRequest) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === 4) {
if (request.status >= 200 request.status < 300) {
if (request.responseText) {
var results = JSON.parse(request.responseText);
for (var i in results.query.allimages) {
var item = results.query.allimages[i];
var title = item.title.replace('File:', '').toString();
if (title) {
suggestionRequest.searchSuggestionCollection.appendQuerySuggestion(title);
}
}
}
}
}
};
request.open("GET", "http://en.wikipedia.org/w/api.php?action=querylist=allimages
format=jsonaiprefix=" + queryText + "ailimit=10", false);
request.send();
getBySearch и groupSearch в пространстве имен Data, необходимо сделать эти функции доступными извне (public). Вставьте выделенные строки, как показано ниже в файл data.js.
WinJS.Namespace.define("Data", {
items: groupedItems,
groups: groupedItems.groups,
getItemsFromGroup: getItemsFromGroup,
getItemReference: getItemReference,
resolveGroupReference: resolveGroupReference,
resolveItemReference: resolveItemReference,
addToMyImages: addToMyImages,
getBySearch: getBySearch,
groupSearch: groupSearch
});
Исторически сложилось так, что в Windows пользователи сами решают, когда необходимо открыть (например, вызвав его из меню Пуск) и закрыть приложение (например, выбрав в меню Файл – Выход). WinRT-приложения в Windows 8 уже не требуют от пользователя закрывать программы, когда они не нужны. Вместо этого такие приложения управляются автоматически и могут существовать в одном из нескольких состояний, как показано на рисунке.
Чтобы узнать больше, посетите
http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx и http://blogs.msdn.com/b/windowsappdev/archive/2012/04/10/managing-app-lifecycle-so-your-apps-feel-quot-always-alive-quot.aspx
Запуск приложения (переход в состояние Running — работающее) происходит по нажатию на значок приложения на начальном экране. Если пользователь переключается на другое приложение, инициализируется событие Suspending (приостановка работы). Обработчик этого события в приложении обычно выполняет действия по сохранению важных данных и информации о состоянии приложения (например, если это браузер, то может быть сохранен адрес веб-страницы, открытой в этот момент).
Затем приложение переходит в состояние Suspending (ожидание). При этом не используются ресурсы процессора, приложение просто находится в режиме ожидания в фоне. Если пользователь снова переключится на приложение, то инициализируется событие Resuming (возобновление). Обработчик этого события в приложении обычно восстанавливает все важные данные и информацию о состоянии.
Чаще всего пользователь, переключаясь между приложениями в Windows 8, видит их в том же состоянии, что и до сворачивания, то есть состояние приложения восстанавливается автоматически. Но в некоторых ситуациях система не обладает достаточным объемом памяти, чтобы хранить состояние всех неактивных приложений. В таких ситуациях приложения, которым не хватает памяти, переходят в состояние завершения работы, и им придется самостоятельно восстановить состояние при новом запуске.
Кроме того, необходимо учитывать, что приложение может находиться в приостановленном состоянии достаточно длительное время – пользователь может вернуться к приложению через несколько часов. В связи с этим важно обновлять после приостановки любые данные, содержащиеся в приложении.
В нашем тестовом приложении пользователь может осуществлять поиск по данным о картинках в Википедии. Но если приложение было приостановлено и пользователь вернулся к нему через какое-то время, то результаты поиска могут отображать устаревшие данные. Например, в Википедии могли появиться новые изображения, которые соответствуют поисковой строке, введенной пользователем.
Усовершенствуем наше приложение, чтобы решить эту проблему. Для этого добавим обработчики событий приостановки (suspend) и восстановления (resume) .
app.oncheckpoint = function (args) {
// TODO: This application is about to be suspended. Save any state
// that needs to persist across suspensions here. If you need to
// complete an asynchronous operation before your application is
// suspended, call args.setPromise().
app.sessionState.history = nav.history;
app.sessionState.searchText = Data.groupSearch.title;
};
} else {
// TODO: This application has been reactivated from suspension.
// Restore application state here.
Data.groupSearch.title = app.sessionState.searchText;
Data.getBySearch(Data.groupSearch);
}

Интеграция приложений и панели чудо-кнопок – важная часть работы WinRT-приложений. Чтобы обеспечить такую функциональность, вы должны объявить контракты и добавить код обработчиков событий. Кроме того, приложения, написанные вами по общеизвестной схеме жизненного цикла, удобны для пользователя.
Пройдя по следующей ссылке, вы найдете руководство по интеграции приложения и панели чудо-кнопок. Попробуйте добавить к приложению, разработанному в этом модуле, дополнительные настройки, используя элемент SettingsFlyout (панель параметров): http://msdn.microsoft.com/en-us/library/windows/apps/hh770544.aspx
checkpoint (проверка состояния) для сохранения состояния? При каких обстоятельствах такое сохранение понадобится?Чтобы больше узнать об использовании контрактов и жизненном цикле приложений, воспользуйтесь следующими ресурсами.
http://msdn.microsoft.com/en-us/library/windows/apps/hh770838.aspx
Рассказывает о том, как обрабатывать события жизненного цикла в собственном приложении, а также как работают фоновые задачи.
http://msdn.microsoft.com/en-us/library/windows/apps/hh464906.aspx
Обзор всех контрактов и расширений со ссылками к соответствующим статьям и пошаговым руководствам.
Описывает контракты и показывает, как интегрировать опции поиска и открытия файла в приложение.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.