【发布时间】:2020-05-08 19:47:44
【问题描述】:
我已阅读 Microsoft Docs about backgrounding on mobile 并查看了应用程序可能处于的各种生命周期状态。但我仍然对 C# 中的后台任务的想法和 背景在iOS/Android中。
问题:
假设我在 ViewModel 或 Model 类中启动了一个新的后台 C# 任务(与确切模式无关)。它通过 WebSocket 接收数据并发出 HTTP 请求,并无限期地运行。当用户将应用程序移至后台时,此任务是否继续运行?如果不是,为什么?我需要做些什么来确保它继续运行?
【问题讨论】:
-
在Android部分,可以使用依赖服务开启一个前台服务。 docs.microsoft.com/en-us/xamarin/android/app-fundamentals/… 您可以在前台服务中运行您的 Https 请求,当应用程序被用户移动到后台时,它将推送通知并保持服务处于活动状态。
-
@LeonLu-MSFT 谢谢你,一篇很棒的文章。对 Microsoft 文档的期望丝毫不减。因此,如果我不在 Android 中将其注册为前台服务,那么我在代码中某处生成的、在后台线程上运行的常规任务会在应用程序后台运行时自动停止?
-
如果你不使用前台服务,当你的应用程序在后台时,它会被Android中的GC自动停止。因为您的应用程序没有任何可见的控制来保持应用程序的活动。在Android 8.0之前,我们可以使用普通的
Service来保持后台任务运行。但在 Android 8.0 或更高版本中,Android 有后台执行限制,当应用程序在后台时,服务会在几分钟内被杀死。 docs.microsoft.com/en-us/xamarin/android/app-fundamentals/… -
@LeonLu-MSFT 谢谢,这是有道理的。如果您也能够确定 iOS 要求,那么我很乐意接受它作为答案。
标签: c# xamarin.forms xamarin.android xamarin.ios