我正在开发一个应用程序,该应用程序将通过 BLE 与智能设备连接并与其通信。
问题是:在哪个队列中处理蓝牙事件的最佳实践是?
我读过很多教程,在所有教程中我发现了这一点:
centralManager = CBCentralManager(delegate: self, queue: nil)
他们选择处理蓝牙事件主队列 (queue: nil
),但我认为这不是一个好的做法。因为可能有很多查询从中央设备发送到外围设备,并且很多答案从外围设备发送到中央设备。
我认为这可能是应用程序运行缓慢的原因,并且可能会对生产力产生不利影响,对吗?
这会淹没 UI 更新队列吗?
I am using dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0) for the CBCentralManager for some time in my Bluetooth projects and it is working flawlessly.
^ 从头开始。我不建议使用全局队列。原因是全局队列是并发队列,而您可能需要串行队列。创建一个新的DispatchQueue(label: "CentralManager")
并将其传递给CBCentralManager
.
所有委托方法都将传递到您指定的队列。如果您对这些方法进行一些非常轻的操作,我想您可以保留主队列。但最好使用后台队列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)