【发布时间】:2020-11-20 00:57:10
【问题描述】:
我有一个适用于 iOS 和 Android 的 Xamarin Forms 项目。我正在使用蓝牙诊断适配器连接到车辆,该车辆具有用于每个通信平台的本机库。在我的主要项目中,我有一个后台工作人员,每当我想查看消息时,我都会启动和停止它。在该线程内(基本上是一个读取和处理任何新消息的循环),我调用 DependencyService.Get 来读取消息。尽管我看到了时间问题(丢失的消息),但这一切都“工作正常”,我很确定这是由于该线程内部发生了数百个 DependencyService.Get 调用(我在本机 iOS/ 中看不到这种行为) Android Xamarin 项目)。有一个更好的方法吗?由于我需要将此代码移动到每个平台中吗?那会很糟糕,因为这将是很多代码重复。感谢您提供任何见解/帮助。
【问题讨论】:
-
您应该只需要调用一次 Get() - 这将获取您对本机服务的引用。然后,您可以使用该引用来调用该服务上您需要的任何方法。
-
另外段落和换行符在stackoverflow上是免费的
-
谢谢杰森,我应该从一开始就做的好建议。不幸的是,我仍然看到时间问题(约 400 毫秒延迟,这足以摆脱通信时间)。我想我会尝试将此代码移动到平台项目中,看看它是否有所改进或我的问题出在其他地方。
-
您应该减少 DependencyService.Get 调用的次数。
-
放下一个标志来检查get调用是否被调用
标签: c# xamarin xamarin.forms xamarin.android xamarin.ios