我正在尝试弄清楚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中实现类似的功能?
答案 0 :(得分:1)
在UWP应用中,即使应用未在前台主动运行,您也可以使用BackgroundTasks来刷新应用数据。
https://docs.microsoft.com/en-us/windows/uwp/launch-resume/support-your-app-with-background-tasks
答案 1 :(得分:1)
这是不可能的。您的iOS信息也不正确 - 您没有时间在那里刷新应用程序。它只能在Android上运行,因为它可以完全打开,甚至可能会使您的应用无法使用该设备。
在UWP上无法保证这样做。 BackgroundTask
只提供有限的时间在背景中工作,这不适合您。但是,如果您的问题是在下载内容的时候,您可以使用某些没有限制的后台下载API。如果您需要时间做其他事情,那么最好的解决方案是在应用程序位于前台时请求ExtendedExecution
,以便它不会进入后台,但可能不会被授予并且不被授予永远在前台奔跑。
另外值得注意的是,如果您希望应用程序在PC上运行,则应用程序不在后台,除非它被最小化。