首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin Forms MessagingCenter或DependencyService

Xamarin Forms MessagingCenter或DependencyService
EN

Stack Overflow用户
提问于 2018-07-21 05:09:15
回答 3查看 638关注 0票数 0

我想为位置跟踪添加一个后台任务。我看过的所有示例都使用MessagingCenter在PCL和平台组件之间进行通信。到目前为止,我一直在使用DependencyService在PCL和平台之间进行通信。有没有理由使用MessagingCenter而不是DependencyService来执行后台任务?

EN

回答 3

Stack Overflow用户

发布于 2018-07-21 05:38:17

不知道我是否正确地回答了你的问题,但是Dependency Service实际上并不需要处理后台任务。这只是一种在项目中实现需要在本地项目中进行不同处理的功能的简单方法。因此,为了获得异步操作的通知,您应该使用Messaging Center

票数 1
EN

Stack Overflow用户

发布于 2018-07-21 08:13:17

你可能不得不针对每个平台做一些特定的事情,然后让他们将结果发布到一个跨平台的地方。

这是因为当涉及到位置的后台收集时,Android和iOS有很大的不同。使用iOS,您可能会在一些对象上有事件处理程序,这些处理程序会在位置根据时间和距离容差变化时接收位置。

对于Android,你需要使用融合位置服务提供商-- Android 8需要这样做。它的不同之处在于,对于后台,它将需要设置一个带有FusedLocationApi的PendingIntent,当位置改变时,它将被发送到您的应用程序。在某些情况下,这些可能是批处理的。例如,您的应用程序可能每隔15分钟调用一次,其中包含这段时间内发生的所有位置更改的集合。你也许可以通过一个“前台服务”来解决这个问题。

请注意,这个插件:https://github.com/jamesmontemagno/GeolocatorPlugin只有在Android 8上作为前台服务实现时,才能在Android上正常工作。

我同意@Greggz的观点,即消息传递中心vs依赖注入更多地是解决平台特定实现的实现选择。

票数 0
EN

Stack Overflow用户

发布于 2018-10-25 01:25:27

据所有人所知...

这是来自Xamarin MVP的一个很好的文本,它说明了MessagingCenter的良好用法和误用

我在某些方面不同意(我想这很好,因为系统之间没有耦合),但可以帮助您理解它的最佳用法。

https://xamarinhelp.com/common-misuse-messagingcenter/

瞧一瞧

问候

吉列尔梅

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51450404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档