【问题标题】:UWP - Background task - short intervalUWP - 后台任务 - 短间隔
【发布时间】:2017-03-17 17:18:41
【问题描述】:

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

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

var taskResult = await backgroundTrigger.RequestAsync(taskParameters);
  1. 扩展执行

    • 应用程序处于活动状态时工作正常
    • 当应用程序暂停时调度程序不可用
  2. 扩展执行+后台任务+应用触发器

    • 应用处于活动状态时可以正常工作
    • 当应用程序暂停时,我在调用上述方法后不断收到 ApplicationTriggerResult.DisabledByPolicy

【问题讨论】:

    标签: uwp dispatcher background-task suspend


    【解决方案1】:

    当应用程序暂停时调度程序不可用

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

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

    根据您的要求,推荐使用LocationTrackingExtendedExecutionReason。官方示例的scenario 3实现了和你想要的一样的功能,你可以参考一下。

    当应用程序暂停时,我在调用上述方法后不断收到 ApplicationTriggerResult.DisabledByPolicy

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

    此外,ExtendExcution 可以在设备未连接电源的情况下暂停运行后让您的应用程序运行额外 10 分钟。更多详情请参考this video

    【讨论】:

    • private async void Sync(object sync) { var data = sync as string; if (data != null) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { await _dl.UpdateLocation(data); // breakpoint at this line never gets hit }); } 在 2 台平板电脑、PC(10586 和 14393)上试过,但不起作用。我正在使用 ExtendedExecutionReason.LocationTracking。
    • @lijevosmetalo 我在 14393 上测试了官方样本,它确实有效。请同时测试场景 3 并按照官方示例更正您的代码。我无法仅通过一个代码行来解决您的问题。如果您仍有问题,请上传整个重现项目,让我们为您提供帮助。
    • 官方样本对我不起作用。尝试场景 3 并将断点放在第 140 行(或 140 到 159 之间的任何行)。启动场景,然后从 VS 挂起应用程序。在 OnTimer 方法中不使用 Dispatcher 的场景 1 可以正常工作,而场景 3 则不行。
    • @lijevosmetalo 如果您在另一台机器上尝试了官方示例,您会遇到同样的异常吗?
    • 嗨,不,我没有任何例外。此外,场景 3 在三分之一的情况下工作,当我按下平板电脑上的电源按钮或切换到非 UWP 应用程序时,它永远不会工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多