Как асинхронные задачи в Xamarin.Forms работают с фоновыми режимами iOS / Android - PullRequest
1 голос
/ 08 мая 2020

Я читал документацию Microsoft о фоновом режиме на мобильных устройствах и видел различные состояния жизненного цикла, в которых может находиться приложение. Но меня все еще немного смущает идея фоновой задачи в C# и идея фоновый в iOS / Android.

Вопрос : Скажем, я начинаю новую задачу C# Background в классе ViewModel или Model (точный шаблон не имеет значения). Он получает данные через WebSocket, а также выполняет HTTP-запросы и продолжает работать бесконечно. Продолжает ли эта задача выполняться, когда приложение переводится пользователем в фоновый режим? Если нет, то почему и что мне нужно сделать, чтобы он продолжал работать?

1 Ответ

1 голос
/ 08 мая 2020

В части Android вы можете использовать службу зависимостей для открытия внешней службы.

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

Вы можете запускать свои Https-запросы в служба переднего плана, она будет sh уведомлять и поддерживать службу в рабочем состоянии, когда приложение перемещается в фоновый режим пользователем.

Вот мой ответ об использовании службы переднего плана, вы также можете обратиться к нему. Как запустить веб-сервис метода в фоновом режиме из android формы xamarin

В части IOS я предлагаю вам добиться этого с помощью фонового режима с задачами.

https://docs.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
});
...