我们可以使用应用程序触发器自动调用后台任务吗?

Posted

技术标签:

【中文标题】我们可以使用应用程序触发器自动调用后台任务吗?【英文标题】:Can we call background task using application trigger automatically? 【发布时间】:2018-02-22 07:28:52 【问题描述】:

我在 UWP 中使用应用程序触发器为后台任务创建了一个应用程序。当我使用按钮手动触发事件时它正在工作。

我想使用应用程序触发器在应用程序最小化中调用后台任务事件。有可能吗?

我使用以下代码通过按钮点击触发后台任务:

 public MainPage()
    
        this.InitializeComponent();
        this.Button_Click();
    
    private void Button_Click(object sender, RoutedEventArgs e)
    

        var taskRegistered = false;
        var exampleTaskName = "ExampleBackgroundtask";

        foreach (var task in BackgroundTaskRegistration.AllTasks)
        
            if (task.Value.Name == exampleTaskName)
            
                taskRegistered = true;
                break;
            
        
        if (!taskRegistered)
        
            var builder = new BackgroundTaskBuilder();

            builder.Name = exampleTaskName;
            builder.TaskEntryPoint = "Background.ExampleBackgroundtask";
            builder.SetTrigger(new SystemTrigger(SystemTriggerType.TimeZoneChange, false));
            BackgroundTaskRegistration task = builder.Register();
            task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
        
    

【问题讨论】:

【参考方案1】:

您的代码出于某种原因使用SystemTrigger 更改时区,但我认为这只是一个意外的复制粘贴错误。

当应用最小化时,VisibilityChanged 事件将在当前Window 上调用。您可以为此事件注册一个处理程序并在那里启动您的后台任务:

Window.Current.VisibilityChanged += (sender, e) => 

    if (!e.Visible)
    
        //minimized, register background task
    
;

【讨论】:

以上是关于我们可以使用应用程序触发器自动调用后台任务吗?的主要内容,如果未能解决你的问题,请参考以下文章

在现代待机模式下触发后台任务

处理来自后台任务的 toast 通知动作触发器 - UWP

即使未打开django应用程序页面,Django如何也能自动触发任务

我启动windows任务管理器,发现有的程序明明没有运行,但是在进程里还是会有不少的程序?是后台吗?

适用于 Windows 10 的通用应用程序。如何触发后台任务?

从 iOS8 中的通知在后台启动呼叫