【问题标题】:How to keep UWP app data refreshed in background without having UWP app opened?如何在不打开 UWP 应用程序的情况下保持 UWP 应用程序数据在后台刷新?
【发布时间】:2017-08-23 19:09:55
【问题描述】:

我正在尝试弄清楚 UWP 应用如何保持其数据更新无需始终处于前台

例如,假设一个 UWP 应用从某处获取其数据。该数据可能会发生变化,这意味着 UWP 应用必须刷新它。我希望有某种组件在后台刷新,无论 UWP 应用程序是否在前台(无论用户是否盯着它)。

在 Android 中,您可以为此使用非粘性服务或待处理意图。

在 IOS 上,我听说你可以使用名为 BackgroundAppRefresh 的东西。

我在 UWP 方面做了一些研究,我正在查看 AppService,我发现它可以在应用外进程或应用内进程中运行。

但是,如果应用程序处于后台(用户没有盯着它),则应用程序内进程 Windows 10 AppService 将被终止。并且一个应用外进程 Windows 10 AppService 将运行长达 30 秒然后被杀死 https://docs.microsoft.com/en-us/windows/uwp/launch-resume/how-to-create-and-consume-an-app-service

这意味着我的后台同步将不起作用,因为如果用户在前台没有 UWP 应用(用户正在查看它),它将在最多 30 秒后停止。

因此,我得出结论,Windows 10 AppService 不是我可以用来实现此功能的工具。

在 UWP 中我可以如何以及使用什么来实现类似的功能?

【问题讨论】:

    标签: uwp windows-10


    【解决方案1】:

    在 UWP 应用中,即使应用未在前台主动运行,您也可以使用 BackgroundTasks 来保持应用数据的刷新。

    https://docs.microsoft.com/en-us/windows/uwp/launch-resume/support-your-app-with-background-tasks

    【讨论】:

    • 是的,但是他们有限制,他想要一些可以运行很长时间的东西......
    • 您想要完成的场景是什么?如果您的活动在前台启动,您可以使用 ExtendedExecution 在后台保持运行很长时间。您可能想针对特定场景提出新问题,以便我们提供具体答案。
    • backgroundtask 答案有什么不正确/不足的地方?即使应用程序数据不在前台,您也可以触发后台任务以保持应用程序数据的刷新。您可以定期触发它们,或者基于推送通知或基于许多其他触发器。
    • 请注意,各种触发器具有不同的策略——例如,MaintananceTrigger 任务可以运行 10 分钟:docs.microsoft.com/en-us/windows/uwp/launch-resume/…——如果它们不足以满足特定场景,我想听听反馈。您也可以登录wpdev.uservoice.com/forums/110705-universal-windows-platform
    • 需要了解更多关于图书馆的信息。如果它使用所有符合 UWP 的 API,它将在 UWP 中工作。你描述的场景听起来很像你想注册推送通知,所以这篇文章可能更相关:docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/…
    【解决方案2】:

    这是不可能的。此外,您有关 iOS 的信息也不正确 - 您没有无限时间在那里刷新您的应用程序。这仅适用于 Android,因为它是完全开放的,即使您可能使设备无法与您的应用一起使用。

    在 UWP 上没有保证可以做到这一点。 BackgroundTask 仅提供有限的后台工作时间,这不适合您。但是,如果您的问题在于下载内容的时间,您可以使用某种没有限制的后台下载 API。如果您需要时间做其他事情,那么最好的解决方案是在应用程序处于前台时询问ExtendedExecution,这样它就不会进入后台,但它可能不会被授予并且不会被授予运行也永远在前台。

    另外值得注意的是,如果您希望应用程序在 PC 上运行,则应用程序不会在后台运行,除非它被最小化。

    【讨论】:

    • 我提供的关于 IOS 信息有什么不正确之处?我不是 IOS 开发人员,但我认为 BackgroundAppRefresh 正是这样做的。非常感谢
    • BackgroundAppRefresh 也有一些限制。不确定那是 30 秒还是什么,但绝对不能随心所欲地运行(更不用说你甚至不能在你想要的时候运行,但是当系统认为这很方便并且可能对用户有用时) .
    • 好的,我想运行 forever 的概念应该不在等式。阅读@StefanWickMSFT 提供的链接似乎是个好主意。或者你有什么其他建议吗?非常感谢
    • 如前所述,如果您需要在后台下载某些内容,您可以检查后台下载器是否适合您。没有其他建议。
    • ExetendedExecution 接缝很有希望,因为我正在谈论的 UWP 应用程序将在 PC 或平板电脑上运行,但据我了解,ExetendedExecution 提供了某种优雅的取消,以防它无法完成.另外,据我了解,当请求并执行 ExtendedExecution 时,用户不必主动使用应用程序(看看它)。这是正确的吗?
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 2017-01-13
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多