2015-10-16 2 views
4

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

+3

http://arteksoftware.com/backgrounding-with-xamarin- forms/ – SushiHangover

+0

Итак ... пока приложение работает в фоновом режиме, но не завершено, запускается Task. Но что, если приложение будет прекращено? Будет ли такая задача также прекращена? Как приложения, такие как WhatsApp, меня синхронизируют, даже если приложение закрыто? – EaranMaleasi

+0

Правильно, если приложение не завершено, после его завершения ваши задачи, конечно же, прекращаются. Приложения, такие как WhatsApp register для использования уведомлений iOS Push, у Android/Google есть аналогичная очередь уведомлений. Вам необходимо прочитать специфическую для платформы службу дроидов и задачи фоновой задачи iOS, поскольку они действительно разные: https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html http: // developer.android.com/reference/android/app/Service.html – SushiHangover

ответ

3

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

Есть также документы об этом for iOS и for Android.

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

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

+1

Просто подумал, что для этого может быть слой абстракции. Я не знаком с фоном, мне это пока не нужно. – EaranMaleasi

+0

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

3

Это единственное решение я нашел http://arteksoftware.com/backgrounding-with-xamarin-forms/

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

Похожей нити (я скопировал мой ответ здесь): Xamarin.forms long running background work