Язык: HTML | XAML

Как отвечать на системные события с помощью фоновых задач (XAML)

Applies to Windows and Windows Phone

Узнайте, как создать фоновую задачу, которая отвечает на события SystemTrigger.

Что необходимо знать

Технологии

Необходимые условия

  • В данном разделе предполагается, что для вашего приложения создан класс фоновой задачи, которую требуется запустить в ответ на событие, активированное системой, например, при появлении доступа к Интернету или входе пользователя в систему. Для выполнения фоновых задач, зарегистрированных с помощью классов SystemTrigger и MaintenanceTrigger, не требуется, чтобы приложение находилось на экране блокировки. В этом разделе мы подробно рассмотрим класс SystemTrigger. Подробнее создание класса фоновой задачи описывается в разделе Краткое руководство: создание и регистрация фоновой задачи.

Инструкции

Этап 1: Создание объекта SystemTrigger

  • Создайте новый объект SystemTrigger в коде вашего приложения. Первый параметр, triggerType, задает тип триггера системного события, который будет активировать эту фоновую задачу. Список типов событий см. в разделе SystemTriggerType.

    Второй параметр, OneShot, указывает, будет ли фоновая задача выполняться однократно при следующем возникновении системного события и активации фоновых задач, или она будет выполняться всякий раз при возникновении этого события, пока не отменена регистрация задачи.

    Код ниже указывает, что фоновая задача выполняется при появлении доступа к Интернету:

    
    SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
    
    

Этап 2:

  • При необходимости можно также добавить условие фоновой задачи, чтобы контролировать время запуска задачи. Условие не даст запустить фоновую задачу, пока это условие не будет выполнено. Подробнее см. в разделе Задание условий для выполнения фоновой задачи.

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

    В следующем коде к фоновой задаче добавляется условие:

    
    SystemCondition exampleCondition = new SystemCondition(SystemConditionType.UserPresent);
    
    

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

  • Зарегистрируйте фоновую задачу, вызвав функцию регистрации фоновой задачи. Подробнее о регистрации фоновых задач см. в разделе Регистрация фоновой задачи.

    Следующий код регистрирует фоновую задачу:

    
    string entryPoint = "Tasks.ExampleBackgroundTaskClass";
    string taskName   = "Internet-based background task";
    
    BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
    
    
    • Applies to Windows Phone

    В Windows Phone необходимо вызывать метод RequestAccessAsync перед регистрацией любой фоновой задачи. В Windows такой вызов требуется только для набора фоновых задач, для выполнения которых приложение должно находиться на экране блокировки, однако в Windows Phone вы должны вызывать этот метод один раз перед регистрацией любой фоновой задачи.

    Примечание  

    Начиная с Windows 8.1 параметры регистрации фоновых задач проверяются во время регистрации. Если какие-либо из параметров регистрации оказываются недопустимыми, возвращается ошибка. Ваше приложение должно обрабатывать ситуации, в которых регистрация фоновой задачи завершается ошибкой. Например, можно проверять ошибки регистрации в условном операторе, а затем — в случае ошибки — повторять регистрацию с другими значениями параметров.

Замечания

Чтобы увидеть регистрацию фоновой задачи в действии, скачайте образец фоновой задачи.

Фоновые задачи можно запускать в ответ на события SystemTrigger и MaintenanceTrigger без помещения на экран блокировки, но все равно необходимо объявить фоновые задачи в манифесте приложения. В Windows Phone также необходимо вызывать метод RequestAccessAsync перед регистрацией фоновых задач любого типа.

Приложения на экране блокировки способны регистрировать фоновые задачи, которые выполняются в ответ на события TimeTrigger, PushNotificationTrigger и NetworkOperatorNotificationTrigger. Это позволяет им поддерживать связь с пользователем в реальном времени, даже когда приложение не находится на переднем плане. Подробнее см. в разделе Поддержка приложения с помощью фоновых задач.

Связанные разделы

Краткое руководство: создание и регистрация фоновой задачи
Регистрация фоновой задачи
Задание условий для выполнения фоновой задачи
Использование триггеров обслуживания
Объявление фоновых задач в манифесте приложения
How to debug a background task
Руководство и контрольный список для фоновых задач

 

 

Показ:
© 2014 Microsoft