使用 Xamarin.Forms 作为背景
Posted
技术标签:
【中文标题】使用 Xamarin.Forms 作为背景【英文标题】:Backgrounding with Xamarin.Forms 【发布时间】:2015-10-16 08:19:59 【问题描述】:我目前正在计划一个 Xamarin.Forms 应用程序,在此过程中我遇到了一个似乎没有答案的问题。 该应用程序必须使用 WCF 服务来获取其数据并告诉服务执行某些任务。当应用程序处于活动状态时,这样做很容易。但是应用程序必须做一些事情。在某些情况下,每 x 分钟调用一次服务以刷新数据并为用户创建通知。 我已经阅读了有关 ios 中的后台或 android 中的服务的一些内容,但是 Xamarin.Forms 应用程序似乎没有办法拥有一种通用的后台工作方式。那么,当应用在 Xamarin.Forms 中处于非活动状态时,如何访问 WCF 服务并处理数据?
【问题讨论】:
arteksoftware.com/backgrounding-with-xamarin-forms 所以...只要应用程序在后台运行但未终止,任务就会运行。但是如果应用程序被终止怎么办?这样的任务也会被终止吗?即使应用程序关闭,WhatsApp 等应用程序如何让我保持同步? 正确,只要应用没有终止,一旦终止,你的任务当然终止。 WhatsApp 等应用程序注册使用 iOS 推送通知,Android/Google 也有类似的通知队列。您需要阅读平台特定的 droid 服务和 iOS 后台任务,因为它们确实不同:developer.apple.com/library/ios/documentation/iPhone/Conceptual/…developer.android.com/reference/android/app/Service.html 【参考方案1】:这是我找到的唯一解决方案:https://robgibbens.com/backgrounding-with-xamarin-forms/
简而言之:您无法在 Xamarin.Forms 中抽象后台任务,因为 iOS、Android 和 WP 以不同的方式工作。您必须使用 MessagingCenter 来发送和接收来自每个平台的特定实现的数据。
一个类似的帖子(我从这里复制了我的答案):Xamarin.forms long running background work
【讨论】:
第一个链接不再有效。【参考方案2】:使用 Xamarin 执行此操作的方式与在 Objective-C 或 Java 应用程序中执行此操作的方式相同。您使用相同的 API 来注册后台服务。
还有关于它的文档for iOS 和for Android。
Xamarin 在每个系统上使用相同的本机 API,就像任何其他本机应用一样。因此,您想使用 Xamarin 执行的所有操作都可以像使用供应商的原始工具一样完成。唯一的区别是编程语言。
Xamarin.Forms 在这里完全无关紧要。它是原生 UI 框架的抽象层,使开发人员能够一次定义用户界面并在 Android、iOS、Windows Phone 和 Windows Store 应用程序上运行真正的原生 UI。此处与背景无关。
【讨论】:
只是认为可能有一个抽象层。我根本不熟悉背景,目前不需要。 您会发现一些例外情况,但目前 Xamarin.Forms 是在 UI 抽象上,它的复杂性足以让他们忙得不可开交。但是由于依赖服务,只要它们相互兼容,就可以很容易地在任何特定于平台的 API 上创建抽象层。我还没有考虑过后台以及如何创建公共依赖服务,但我确实从经验中知道 iOS 和 Android 后台概念非常不同。所以很难创建一个好的抽象层。以上是关于使用 Xamarin.Forms 作为背景的主要内容,如果未能解决你的问题,请参考以下文章
ReactiveUI 中的 Xamarin.Forms 控件是不是需要自定义绑定?
AppCenter 崩溃和 Firebase Crashlytics - 两者都不起作用 - Xamarin.Forms iOS