Xamarin BLE实现OnCharacteristicValueChanged的性能很差

时间:2016-06-17 16:36:47

标签: android xamarin mono xamarin.forms bluetooth-lowenergy

我一直在实现一个从BLE设备流式传输数据的应用程序。对于某些背景,此设备通过11.25ms的连接间隔发送数据。我目前正在开发运行Marshmallow的Nexus 9平板电脑。

连接到设备,特性的R / W似乎运行良好。一旦我开始订阅特征通知,触发BluetoothGattCallback.OnCharacteristicChanged()回调就会出现问题。我的应用程序立即从4%上升到15%的CPU。

使用characteristic.GetValue()方法从回调中获取当前字节值需要更长时间,将CPU提升到~30%。看看DDMS,看起来OnCharacteristicChanged()开始占用大量的CPU时间。此外,GC开始不断运行,

我在Android工作室实现了这一功能,总CPU使用率<5%,而OnCharaceristicChanged()回调占用的CPU时间要少得多。在我看来,要么FeatureChanged回调的线程池分配有问题,要么单声道Android.Bluetooth实现中的一些其他问题。

Native App Trace For Characteristic Notification
Xamarin App Trace For Characteristic Notification

::<>

0 个答案:

没有答案