Как запустить фоновую задачу по таймеру (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Вы узнаете, как планировать однократное выполнение фоновой задачи или периодически запускать фоновую задачу, связанную с приложением Магазина Windows. Если пользователь размещает ваше приложение на экране блокировки, то оно может зарегистрировать фоновую задачу, которая будет запускаться с интервалом до 15 минут в Windows и каждые 30 минут в Windows Phone. Например, фоновая задача может использоваться для периодических обновлений плитки или индикатора.
Что необходимо знать
Технологии
Необходимые условия
- В примере предполагается, что есть фоновая задача, которая должна выполняться периодически или в определенное время для поддержки вашего приложения. В Windows фоновая задача будет запускаться с помощью TimeTrigger, только если вы запросили размещение приложения на экране блокировки, вызвав метод RequestAccessAsync, а пользователь принял это предложение. В Windows Phone вы должны вызвать метод RequestAccessAsync, однако пользователь не получает предложения. Подробнее см. в разделе Отображение плиток на экране блокировки.
- В этом разделе предполагается, что класс фоновой задачи уже создан, включая метод Run, который используется в качестве точки входа фоновой задачи. Чтобы быстро создать фоновую задачу, см. Краткое руководство: создание и регистрация фоновой задачи. Дополнительные сведения об условиях и триггерах: Поддержка приложения с помощью фоновых задач.
Инструкции
Этап 1: Создание триггера времени
Создайте новый TimeTrigger. Второй параметр OneShot указывает, будет ли фоновая задача выполняться однократно или периодически. Если OneShot имеет значение True, первый параметр (FreshnessTime) задает число минут ожидания перед планированием фоновой задачи. Если OneShot присвоено значение False, частоту выполнения фоновой задачи определяет параметр FreshnessTime.
В Windows 8 встроен таймер, запускающий фоновые задачи с интервалом в 15 минут. Заметьте, что в Windows Phone этот интервал составляет 30 минут.
Если параметру FreshnessTime задано значение 15 минут, а параметру OneShot — "true", задача выполняется однократно через 0–15 минут с момента ее регистрации.
Если параметру FreshnessTime задано значение 15 минут, а параметру OneShot — "false", задача выполняется каждые 15 минут через 0–15 минут с момента ее регистрации.
Примечание Если параметру FreshnessTime задано значение меньше 15 минут, при попытке зарегистрировать фоновую задачу появляется исключение.
Например, данный триггер запускает выполнение фоновой задачи один раз в час:
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
Этап 2: Добавление условия (необязательно)
При необходимости можно также добавить условие фоновой задачи, чтобы контролировать время запуска задачи. Условие не даст запустить фоновую задачу, пока это условие не будет выполнено. Подробнее см. в разделе Задание условий для выполнения фоновой задачи.
В этом примере условию присвоено значение UserPresent, поэтому после срабатывания триггера задача выполняется, только если пользователь активен. Список возможных условий см. в разделе SystemConditionType.
В следующем коде для фоновой задачи добавляется условие:
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
Этап 3: Запрос доступа к экрану блокировки
Перед регистрацией фоновой задачи TimeTrigger запросите у пользователя разрешение добавления на экран блокировки, вызвав RequestAccessAsync.
В Windows следующий код открывает диалоговое окно, чтобы запросить у пользователя разрешение добавить приложение на экран блокировки. В Windows Phone этот код просто запрашивает у системы возможность выполнения фоновых задач вашим приложением:
Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
Примечание Приложение может запросить доступ к экрану блокировки только один раз. Пользователь может выбрать только один из двух параметров. Последующие вызовы RequestAccessAsync будут проигнорированы.
Этап 4: Регистрация фоновой задачи
Зарегистрируйте фоновую задачу, вызвав функцию регистрации фоновой задачи. Подробнее о регистрации фоновых задач см. в разделе Регистрация фоновой задачи.
Следующий код регистрирует фоновую задачу:
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Example hourly background task”;
var task = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, userCondition);
Примечание
Начиная с Windows 8.1 параметры регистрации фоновых задач проверяются во время регистрации. Если какие-либо из параметров регистрации недопустимы, возвращается ошибка. Ваше приложение должно обрабатывать ситуации, в которых регистрация фоновой задачи завершается ошибкой. Например, можно проверять ошибки регистрации в условном операторе, а затем — в случае ошибки — повторять регистрацию с другими значениями параметров.
Замечания
Примечание В Windows фоновые задачи регистрируются с помощью триггера времени, только если пользователь добавил ваше приложение на экран блокировки (или предоставил разрешение, когда приложение запросило доступ). Подробнее см. в разделе Отображение плиток на экране блокировки. Фоновые задачи можно связать с триггерами, которые не требуют, чтобы приложение находилось на экране блокировки. Руководство по таким типам триггеров фоновых задач см. в разделе Поддержка приложения с помощью фоновых задач.
Связанные разделы
Краткое руководство: создание и регистрация фоновой задачи