重要的应用程序接口(API)
了解如何创建响应 SystemTrigger 事件的后台任务。
本主题假定你有一个为应用编写的后台任务类,并且此任务需要针对系统触发的事件(例如 Internet 可用性更改或用户登录时)运行。 本主题重点介绍 SystemTrigger 类。 有关编写后台任务类的详细信息,请参阅 创建和注册进程内后台任务 或 创建和注册进程外后台任务。
创建 SystemTrigger 对象
在应用代码中,创建一个新的 SystemTrigger 对象。 第一个参数 triggerType,指定将激活此后台任务的系统事件触发器的类型。 有关事件类型的列表,请参阅 SystemTriggerType。
第二个参数 OneShot,指定后台任务是在下次发生系统事件时运行一次,还是在每次系统事件发生时运行,直到任务注销为止。
以下代码指定每当 Internet 可用时,后台任务就会运行:
SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);
注册后台任务
通过调用后台任务注册函数注册后台任务。 有关注册后台任务的详细信息,请参阅 注册后台任务。
以下代码为进程外运行的后台进程注册后台任务。 如果要调用在主机应用所在的同一进程中运行的后台任务,则不会设置 entrypoint
:
string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName = "Internet-based background task";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName = "Internet-based background task";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
注释
通用 Windows 平台应用必须在注册任何后台触发器类型之前调用 RequestAccessAsync。
为了确保你的通用 Windows 应用在发布更新后继续正常运行,你必须调用 RemoveAccess,然后在应用在更新后启动时调用 RequestAccessAsync。 有关详细信息,请参阅 后台任务指南。
注释
后台任务注册参数在注册时会被验证。 如果任何注册参数无效,则返回错误。 确保应用程序能够有效处理后台任务注册失败的情况——如果在尝试注册任务后应用程序依赖于拥有有效的注册对象,那么它可能会崩溃。
注解
若要查看后台任务注册的操作,请下载 后台任务示例。
后台任务可以运行以响应
应用可以注册响应 TimeTrigger、PushNotificationTrigger以及 NetworkOperatorNotificationTrigger 事件的后台任务,从而使这些任务能够在应用不在前台时向用户提供实时通信。 有关详细信息,请参阅 用后台任务支持应用。