Xamarin.Forms背景/前景服务最佳做法?

时间:2018-12-24 15:46:34

标签: android ios xamarin.forms

我正在使用Xamarin构建应用程序。无论应用程序位于前台还是后台,它都会定期(每秒)进行某些操作。想一下计时器/时钟。

我在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年,也有许多事情在变化。网络上挤满了无数关于这一切的教程(不再有效)。

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

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

是否有最佳实践或其他任何与本出版物一样简单的东西?在服务“初始化”期间,定期调用将在后台运行,并根据需要对状态服务进行调用以跟踪/宣布不同的状态。

1 个答案:

答案 0 :(得分:0)

Xamarin.Forms仅用于跨平台开发的用户界面,并且由于Xamarin.Forms基于.Net,因此您也可以将.Net中可用的所有内容用于跨平台开发。这是开箱即用的。 .Net中不可用的一些跨平台功能已由Xamarin.Essentials之类的官方和非官方插件提供。

要得出结论,除非有您所需的插件(我不知道),否则需要使用本机Android和iOS函数。同样,您也受其限制的限制。

无法在后台在iOS上正常运行该应用程序。虽然可能存在一些使用推送通知的变通办法,但在一般情况下它们都不是很好的工作。