Фон с Xamarin.Forms

В настоящее время я планирую приложение Xamarin.Forms, и при этом я натолкнулся на точку, на которую, похоже, нет ответа.
Приложению придется работать со службой WCF, чтобы получить свои данные, а также сообщить службе определенные задачи. Пока приложение активно, сделать это очень просто. Но приложение должно кое-что сделать. Звоните в Сервис каждые x минут, чтобы обновлять данные и в некоторых случаях создавать уведомления для пользователя. Я читал кое-что о фоновом режиме в iOS или службах в Android, но, похоже, у приложения Xamarin.Forms нет общего способа выполнения фоновой работы. Итак, как я могу получить доступ к службе WCF и обработать данные, пока приложение неактивно в Xamarin.Forms?


person EaranMaleasi    schedule 16.10.2015    source источник
comment
arteksoftware.com/backgrounding-with-xamarin-forms   -  person SushiHangover    schedule 16.10.2015
comment
Итак ... пока приложение работает в фоновом режиме, но не завершено, задача будет выполняться. Но что, если приложение закрывается? Будет ли прекращена и такая задача? Как приложения, такие как WhatsApp, поддерживают синхронизацию, даже если приложение закрыто?   -  person EaranMaleasi    schedule 16.10.2015
comment
Правильно, если приложение не завершено, после завершения ваши задачи, конечно же, завершаются. Такие приложения, как WhatsApp, регистрируются для использования push-уведомлений iOS, в Android / Google есть аналогичная очередь уведомлений. Вам необходимо ознакомиться с конкретной платформой службы дроидов и фоновыми задачами iOS, поскольку они действительно разные: developer.apple.com/library/ios/documentation/iPhone/Conceptual/ developer.android.com/reference/android/app/Service.html   -  person SushiHangover    schedule 16.10.2015


Ответы (2)


Это единственное решение, которое я нашел: https://robgibbens.com/backgrounding-with-xamarin-forms/

В двух словах: вы не можете абстрагироваться от фоновых задач в Xamarin.Forms, потому что iOS, Android и WP работают по-другому. Вы должны использовать MessagingCenter для отправки и получения данных от конкретных реализаций на каждой платформе.

Аналогичная ветка (я скопировал свой ответ отсюда): Xamarin.forms long работает в фоновом режиме

person MatPag    schedule 18.12.2015
comment
Первая ссылка больше не действительна. - person Dan Cundy; 01.02.2021

Вы делаете это в Xamarin так же, как в приложениях Objective-C или Java. Вы используете тот же API для регистрации фоновой службы.

Об этом также есть документы для iOS и для Android.

Xamarin использует тот же собственный API в каждой системе, как и любое другое собственное приложение. Таким образом, все, что вы хотите делать с Xamarin, можно сделать так же, как если бы вы использовали оригинальные инструменты поставщиков. Единственное отличие - это язык программирования.

Xamarin.Forms здесь совершенно неуместен. Это уровень абстракции для собственных фреймворков пользовательского интерфейса, который позволяет разработчикам определять пользовательский интерфейс один раз и запускать действительно собственный пользовательский интерфейс в приложениях Android, iOS, Windows Phone и Windows Store. Здесь нет ничего общего с фоном.

person Wosi    schedule 16.10.2015
comment
Просто подумал, что для этого может быть слой абстракции. Я вообще не знаком с предысторией, пока в этом не нуждался. - person EaranMaleasi; 16.10.2015
comment
Вы найдете несколько исключений, но в настоящее время Xamarin.Forms использует абстракцию пользовательского интерфейса, и это достаточно сложно, чтобы они были заняты. Но благодаря службам зависимостей легко создать уровень абстракции для любых API-интерфейсов, зависящих от платформы, при условии, что они достаточно совместимы друг с другом. Я еще не подумал о фоновом режиме и о том, как создать общую службу зависимостей, но по опыту знаю, что концепции фонового управления iOS и Android ОЧЕНЬ разные. Так что создать хороший слой абстракции может быть сложно. - person Thibault D.; 19.10.2015