【问题标题】:Xamarin.Forms Background/Foreground Service Best Practices?Xamarin.Forms 后台/前台服务最佳做法?
【发布时间】:2018-12-24 15:46:33
【问题描述】:

我正在使用 Xamarin.Forms 构建一个应用程序,该应用程序将定期(重新:每秒)可能执行某些操作,无论应用程序是在前台还是后台。想想计时器/时钟之类的东西。

我发现了大量有关 Android 方面的信息。看起来在 8 之前,您可以在服务中运行它 - 而在 8 或更高版本中,您需要将其作为前台服务运行。

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

据我所知,如果我想编写任何类型的控制器来初始化此服务(仅在我的客户端应用程序中必要时),我必须将 Mono.Android 添加到主共享库中,这看起来像这样做是错误的,因为 iOS 版本也会有这种依赖关系。

但是,当我搜索它时,iOS 文档有点参差不齐,最佳实践也是如此。我不确定正确的路线是否是做背景 - 或者这是否会关闭。

例如 https://docs.microsoft.com/en-us/xamarin/ios/app-fundamentals/backgrounding/introduction-to-backgrounding-in-ios

Xamarin.Forms 似乎在过去几年的工作方式上取得了长足的进步——即使是 2016 年到 2017 年,也发生了许多变化。网络上充斥着大量关于所有这些的不同(并且不再有效)的教程。

现在,我有一个状态跟踪器的单例实例,可以调用它来每秒更新一次(或其他控件,即向前跳一分钟)。

是否有跨平台前台服务开发的最佳实践?在这一点上,我最好的猜测是从该控制器发布消息事件,在 iOS 和 Android 项目的主体中使用特定代码,然后它们将“知道”如何创建适当的服务,然后调用该状态的单例实例-我之前提到的跟踪器(每秒运行一次)。

是否有任何最佳实践或其他任何内容如此简单的已发布?定期调用,在服务“初始化”时在后台运行,并根据需要对状态服务进行调用以跟踪/宣布不同的状态。

【问题讨论】:

    标签: android ios xamarin.forms


    【解决方案1】:

    Xamarin.Forms 只是用户界面跨平台开发,并且由于 Xamarin.Forms 基于 .Net,您还可以使用 .Net 中可用的所有内容进行跨平台开发。这就是开箱即用的程度。 Xamarin.Essentials 等官方和非官方插件涵盖了一些 .Net 中不可用的跨平台功能。

    总而言之,除非有您需要的插件(我不知道),否则您需要使用原生 Android 和 iOS 功能。你也受到他们的限制。

    无法在 iOS 上以可预见的方式在后台运行应用程序。虽然可能有一些解决方法,比如使用推送通知,但在一般情况下,它们都不能很好地工作。

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2015-10-01
      • 2010-09-24
      • 2020-06-05
      • 2020-01-19
      相关资源
      最近更新 更多