События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как использовать ApplicationTrigger для активации фоновой задачи в приложении.
Пример создания триггера приложения см. в этом примере.
В этом разделе предполагается, что у вас есть фоновая задача, которую необходимо активировать из приложения. Если у вас еще нет фоновой задачи, в BackgroundActivity.cs есть пример фоновой задачи. Или выполните действия, описанные в разделе "Создание и регистрация фоновой задачи вне процесса" для создания.
Используйте ApplicationTrigger для запуска кода в отдельном процессе от приложения переднего плана. Приложение ApplicationTrigger подходит, если у приложения есть работа, которая должна выполняться в фоновом режиме, даже если пользователь закрывает приложение переднего плана. Если фоновая работа должна остановиться при закрытии приложения или должна быть привязана к состоянию процесса переднего плана, то вместо этого следует использовать расширенное выполнение .
Создайте приложение ApplicationTrigger. Его можно сохранить в поле, как показано в приведенном ниже фрагменте кода. Это для удобства, чтобы нам не нужно создавать новый экземпляр позже, когда мы хотим сигнализировать триггеру. Но для сигнала триггера можно использовать любой экземпляр ApplicationTrigger .
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
_AppTrigger = new ApplicationTrigger();
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
Windows::ApplicationModel::Background::ApplicationTrigger _AppTrigger;
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
ApplicationTrigger ^ _AppTrigger = ref new ApplicationTrigger();
Вы можете создать условие фоновой задачи для управления выполнением задачи. Условие предотвращает выполнение фоновой задачи до тех пор, пока условие не будет выполнено. Дополнительные сведения см. в разделе "Задание условий для выполнения фоновой задачи".
В этом примере условие имеет значение InternetAvailable , чтобы после активации задача выполнялась только после доступа к Интернету. Список возможных условий см. в разделе SystemConditionType.
SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition internetCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ internetCondition = ref new SystemCondition(SystemConditionType::InternetAvailable)
Дополнительные сведения об условиях и типах фоновых триггеров см. в статье "Поддержка приложения с фоновыми задачами".
Прежде чем зарегистрировать фоновую задачу ApplicationTrigger , вызовите RequestAccessAsync , чтобы определить уровень фонового действия, который пользователь разрешает, так как пользователь может отключить фоновое действие для приложения. Дополнительные сведения о том, как пользователи могут управлять параметрами фонового действия, см. в разделе "Оптимизация фонового действия ".
var requestStatus = await Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
if (requestStatus != BackgroundAccessStatus.AlwaysAllowed)
{
// Depending on the value of requestStatus, provide an appropriate response
// such as notifying the user which functionality won't work as expected
}
Зарегистрируйте фоновую задачу, вызвав функцию регистрации фоновых задач. Дополнительные сведения о регистрации фоновых задач и определении метода RegisterBackgroundTask() см . в разделе "Регистрация фоновой задачи".
Если вы рассматриваете возможность использования триггера приложения для расширения времени существования процесса переднего плана, рассмотрите возможность использования расширенного выполнения . Триггер приложения предназначен для создания отдельно размещенного процесса для выполнения работы. В следующем фрагменте кода регистрируется внепроцессный фоновый триггер.
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName = "Example application trigger";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Example application trigger" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName = "Example application trigger";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
Параметры регистрации фоновых задач проверяются во время регистрации. Ошибка возвращается, если какие-либо из параметров регистрации недопустимы. Убедитесь, что приложение корректно обрабатывает сценарии, в которых регистрация фоновых задач завершается ошибкой. Если вместо этого приложение зависит от наличия допустимого объекта регистрации после попытки регистрации задачи, это может завершиться сбоем.
Перед активацией фоновой задачи используйте BackgroundTaskRegistration , чтобы убедиться, что фоновая задача зарегистрирована. Хорошее время, чтобы убедиться, что все фоновые задачи зарегистрированы во время запуска приложения.
Активируйте фоновую задачу, вызвав ApplicationTrigger.RequestAsync. Любой экземпляр ApplicationTrigger будет выполняться.
Обратите внимание, что ApplicationTrigger.RequestAsync не может вызываться из самой фоновой задачи или когда приложение находится в фоновом состоянии выполнения (дополнительные сведения о состоянии приложения см. в разделе "Жизненный цикл приложения"). Он может вернуть DisabledByPolicy , если пользователь установил энергетические или политики конфиденциальности, которые не позволяют приложению выполнять фоновые действия. Кроме того, одновременно может выполняться только один AppTrigger. Если вы пытаетесь запустить AppTrigger, пока другой уже запущен, функция вернет CurrentlyRunning.
var result = await _AppTrigger.RequestAsync();
Используйте BackgroundExecutionManager.RequestAccessAsync , чтобы определить, должен ли пользователь решить, что фоновая активность приложения должна быть ограничена. Помните об использовании батареи и запустите его только в фоновом режиме, если необходимо выполнить действие, которое пользователь хочет. Дополнительные сведения о том, как пользователи могут управлять параметрами фонового действия, см. в разделе "Оптимизация фонового действия ".
См. статью "Поддержка приложения с фоновыми задачами" для ограничений ресурсов, применяемых к фоновым задачам .
Начиная с Windows 10, пользователю больше не нужно добавлять приложение на экран блокировки, чтобы использовать фоновые задачи.
Фоновая задача будет выполняться только с помощью ApplicationTrigger, если вы сначала назвали RequestAccessAsync.
События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!