Xamarin.Forms中的异步任务如何在iOS/Android后台模式下工作



我已经阅读了关于移动设备后台的Microsoft文档,并了解了应用程序可能处于的各种生命周期状态。但我仍然对C#中后台任务的想法和iOS/Android中后台的想法有点困惑。

问题
假设我在ViewModel或Model类中启动一个新的后台C#任务(确切模式无关(。它通过WebSocket接收数据,并发出HTTP请求,并无限期地运行。当用户将应用程序移动到后台时,此任务是否继续运行?如果没有,为什么?我需要做些什么来确保它继续运行?

在Android部分,您可以使用依赖服务来打开foreground服务。

https://learn.microsoft.com/en-us/xamarin/android/app-fundamentals/services/foreground-services

您可以在前台服务中运行Https请求,当用户将应用程序移动到后台时,它将推送通知并保持服务的活动状态。

这是我关于使用前台服务的答案,你也可以参考。如何从android xamarin表单在后台运行方法Web服务

在IOS部分,我建议您通过任务的背景来实现它。

https://learn.microsoft.com/en-us/xamarin/ios/app-fundamentals/backgrounding/ios-backgrounding-techniques/ios-backgrounding-with-tasks

您可以将后台HTTP请求放入BeginBackgroundTask方法,如下格式代码所示。

nint taskID = UIApplication.SharedApplication.BeginBackgroundTask( () => {
// your  background HTTP request
});

最新更新