UWP - 后台任务 - 短间隔

时间:2016-11-03 23:44:08

标签: uwp dispatcher background-task suspend

我正在开发UWP应用程序,如果当前的应用程序状态处于活动状态或暂停状态,我需要每隔15秒发送一次我的位置。我尝试了两种不同的方法:

await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
        {
            await UpdateMethod(data);
        });

var taskResult = await backgroundTrigger.RequestAsync(taskParameters);
  1. ExtendedExecution

    • 在应用程序处于活动状态时正常工作
    • 当应用程序暂停时Dispatcher不可用
  2. ExtendedExecution +后台任务+应用程序触发器

    • 当应用程序处于活动状态时,它可以正常工作
    • 当应用程序暂停时,我在调用上面的方法后继续获取ApplicationTriggerResult.DisabledByPolicy

1 个答案:

答案 0 :(得分:1)

  

当应用程序暂停时Dispatcher不可用

我测试了ExtendedExecution官方样本,Dispatcher在暂停应用后如果成功请求了ExtendedExecutionSession,效果很好。我的环境是windows 10 build 14393,我在PC设备上测试了这个功能。

  

我需要每隔15秒发送一次我的位置

根据您的要求,建议您使用LocationTracking ExtendedExecutionReason。官方样本的scenario 3实现了与您想要的功能相同的功能,您可以参考。

  

当应用程序暂停时,我在调用上面的方法后继续获取ApplicationTriggerResult.DisabledByPolicy

根据官方样本,ExtendExcution已满足您的要求。对于application trigger,就我所知,它不能从UI线程中请求。

此外,如果设备未连接电源,ExtendExcution可以使您的应用在暂停操作后再运行10分钟。更多详情请参阅this video