29
Михаил Галушко, Microsoft MVP Фоновые задачи и многозадачность Windows XAML+ Silverlight 8.1 24 апреля 2014 Building Apps for Windows Phone 8.1 Jump Start

Фоновые задачи и многозадачность для Windows Phone

Embed Size (px)

DESCRIPTION

Фоновые задачи и многозадачность для Windows Phone

Citation preview

Page 1: Фоновые задачи и многозадачность для Windows Phone

Михаил Галушко, Microsoft MVP

Фоновые задачи и многозадачность

Windows XAML+

Silverlight 8.1

24 апреля 2014

Building Apps for Windows Phone 8.1 Jump Start

Page 2: Фоновые задачи и многозадачность для Windows Phone

Ключевые темы

Многозадачность в Windows PhoneИспользуем фоновые задачиФоновые задачи и триггерыУсловное выполнение фоновых задачPush notification как триггер

Page 3: Фоновые задачи и многозадачность для Windows Phone

Мобильная многозадачность

Приложения, которые не видны, переходят в режиме suspended

Приложения могут выполнять действия в режиме suspended:

1. Живые плитки или «тосты»2. Запланированные оповещения3. Задачи вызванные ОС4. Фоновые задачи и агенты

Page 4: Фоновые задачи и многозадачность для Windows Phone

Запланированные задачи

PeriodicTask, ResourceIntensiveTask

Фоновая передача данных

Фоновое отслеживание местоположения

VOIP

Аудио агенты

Фоновые задачи в WP8

Page 5: Фоновые задачи и многозадачность для Windows Phone

Фоновые задачи в Windows Phone 8.1

Page 6: Фоновые задачи и многозадачность для Windows Phone

Фоновые задачи

Приложение может регистрировать фоновые задачиЗадачи запускаются ОС, это фоновая работа вашего приложения

Те же настройки и разрешения из манифеста.Использование ресурсов ограничивается ОСОсновное приложение (если запущено) ограниченно взаимодействует с задачами:

Задачи могут вызывать события в основное приложение: progress/completedЗадачи могут использовать то же хранилище, что и основное приложение

Задачи могут использовать: toast, tile, badge UI

Возможно получить список уже зарегистрированных задачПриложение может иметь 1 и более задач

Page 7: Фоновые задачи и многозадачность для Windows Phone

Создание фоновой задачи

Используйте шаблон Windows Runtime Component

Поставьте ссылку из основного проекта на проект с фоновой задачей

Page 8: Фоновые задачи и многозадачность для Windows Phone

Создание фоновой задачи

Задача может получить оповещение об отмене. Но в некоторых случаях (если превышен лимит памяти), она может быть завершена без оповещения.

Page 9: Фоновые задачи и многозадачность для Windows Phone

Вы указываете условия (триггеры) при которых запускается фоновая задача

Page 10: Фоновые задачи и многозадачность для Windows Phone

Типы триггеровТриггер Инфо

System Trigger Запускается при определенном событииСобытия: UserPresent/Away, NetworkStateChange, InternetAvailable, SessionConnected, ServicingComplete, TimeZoneChange Также: LockScreenApplicationAdded и LockScreenApplicationRemoved недоступны для Windows Phone

TimeTrigger Запускается периодически (минимальный интервал - 30 мин)

LocationTrigger Запускается при изменении местоположения

MaintenanceTrigger Запускается периодически (минимальный интервал - 30 мин), но только если устройство работает на зарядке

PushNotificationTrigger Запускается при получении raw push notification

Page 11: Фоновые задачи и многозадачность для Windows Phone

Типы триггеровТриггер Инфо

RfcommConnectionTrigger Bluetooth: когда установлено RFCOMM соединение

DeviceChangeTrigger Bluetooth: когда установлено/закрыто ACL соединение

BluetoothSignalStrengthTrigger Bluetooth: когда изменяются параметры сигнала

GattCharacteristicNotificationTrigger

Bluetooth: когда получены изменения от Bluetooth LE устройства

Также: ControlChannelTrigger для работы с TCP/IP, не поддерживается на Windows Phone

Page 12: Фоновые задачи и многозадачность для Windows Phone

Условия

УсловиеUser[Not]PresentInternet[Not]AvailableFreeNetworkAvailableBackgroundWorkCostNotHigh

“run this task every 30 minutes if the internet is available”

Page 13: Фоновые задачи и многозадачность для Windows Phone

Регистрация задачи в манифесте

Не нужно указывать executable.

Page 14: Фоновые задачи и многозадачность для Windows Phone

Запрос разрешениядля фоновой работы

Page 15: Фоновые задачи и многозадачность для Windows Phone

Запрос разрешения для фоновой работы async void RegisterBackgroundTasks() { // On Windows, RequestAccessAsync presents the user with a confirmation // dialog that requests that an app be allowed on the lock screen. // On Windows Phone, RequestAccessAsync does not show any user confirmation UI // but *must* be called before registering any tasks var access = await BackgroundExecutionManager.RequestAccessAsync();

// A 'good' status return on Phone is BackgroundAccess.AllowedMayUseActiveRealTimeConnectivity if (access == BackgroundAccessStatus.Denied) { // Either the user has explicitly denied background execution for this app // or the maximum number of background apps across the system has been reached // Display some informative message to the user... } }

Page 16: Фоновые задачи и многозадачность для Windows Phone

Появился в Windows Phone 8.1

Управляет списком приложений, которые работают в фоне: текущий статус, нагрузка на батарею

Battery Saver

Page 17: Фоновые задачи и многозадачность для Windows Phone

Регистрация фоновой задачи

BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); taskBuilder.Name = "MyBackgroundTask";

// Many different trigger types could be used here SystemTrigger trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false); taskBuilder.SetTrigger(trigger); taskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));

// Entry point is the full name of our IBackgroundTask implementation // Good practice to use reflection as here to ensure correct name taskBuilder.TaskEntryPoint = typeof(MyBackgroundTask.TheTask).FullName;

BackgroundTaskRegistration registration = taskBuilder.Register();

// Optionally, handle the progress/completed events of the task registration.Progress += registration_Progress; registration.Completed += registration_Completed;

Page 18: Фоновые задачи и многозадачность для Windows Phone

Получение списка зарегистрированных задач // AllTasks is a dictionary <Guid, IBackgroundTaskRegistration> so you can get back // to your registration by id or by posiiton, or select First if you only have one registration. var taskRegistration = BackgroundTaskRegistration.AllTasks.Values.FirstOrDefault();

// We could then unregister the task, optionally cancelling any running instance if (taskRegistration != null) { taskRegistration.Unregister(true); }

// Release the progress/completed event subscriptions registration.Progress -= registration_Progress; registration.Completed -= registration_Completed;

Page 19: Фоновые задачи и многозадачность для Windows Phone

Отладка фоновых задач

Вы можете запустить фоновую задачу вручную для отладки (после того, как она была зарегистрирована)

Page 20: Фоновые задачи и многозадачность для Windows Phone

Демо: фоновые задачи

Page 21: Фоновые задачи и многозадачность для Windows Phone

Пример: push notification как триггер

Page 22: Фоновые задачи и многозадачность для Windows Phone

Push notification как триггер

Football ScoreCloud

Service

Windows Notification

Service

PushBackground

TaskStorage

0:32m Man City 1 Man Utd 0

0:47m Man City 1 Man Utd 1

0:85m Man City 2 Man Utd 1

End: Man City 2 Man Utd 1

<?xml version=“1.0”> Type = raw, Data = Man City....</xml>

123

Football News: Your Team Won!

4

<?xml version=“1.0”> Type = raw, Data = End Game</xml>

<?xml version=“1.0”> Type = raw, Data = Man City....</xml>

<?xml version=“1.0”> Type = raw, Data = Man City....</xml>

ForegroundApp

Page 23: Фоновые задачи и многозадачность для Windows Phone

Демо: отслеживание изменения локации

Page 24: Фоновые задачи и многозадачность для Windows Phone

Ограничения на ресурсы

Page 25: Фоновые задачи и многозадачность для Windows Phone

Ограничения на ресурсы

Все фоновые задачи имеют ограничения на: ЦПУ, память и сетьОграничения основаны на текущем использовании ЦПУ. В Windows Phone: ограничение ЦПУ - 2 секунды на приложение, обновляется каждые 15 минутОграничения на память зависят от параметров устройства

Вызовите RequestAccessAsync() для увеличения квотыНа устройствах с 512МБ – количество фоновых задач ограниченоЕсли лимит превышен, функция RequestAccessAsync вернет Denied

Page 26: Фоновые задачи и многозадачность для Windows Phone

Ограничения на оперативную память

Тип задачи 512 МБ 1 ГБ 2 ГБ и более

Местоположение 16 30 40

Bluetooth 16 16 16

Сервисные задачи 10 10 10

Другие 16 30 40

В режиме отладки 30 40 50

Page 27: Фоновые задачи и многозадачность для Windows Phone

Не поддерживается в приложениях Windows Phone Store

Приложение работающее в режиме lock-screen

Отслеживание изменения местоположения в фоне

VoIP агенты

Wallet агенты

Page 28: Фоновые задачи и многозадачность для Windows Phone

ТакжеФоновое аудиоСм сессию 17: Камера, медиа и аудио

Фоновая передача данныхСм сессию 13: Работа с сетью

Механизмы оповещенийСм сессию 10: Tiles, badges, toasts и центр оповещений

Page 29: Фоновые задачи и многозадачность для Windows Phone

The information contained in this document represents the current view of Microsoft Corp. on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication. This guide is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form, by any means (electronic, mechanical, photocopying, recording or otherwise), or for any purpose, without the express written permission of Microsoft. Microsoft may have patents, patent applications, trademarks, copyrights or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights or other intellectual property. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.