gpt4 book ai didi

android - Android BluetoothGattCallback 是否需要及时返回?

转载 作者:太空狗 更新时间:2023-10-29 15:03:44 29 4
gpt4 key购买 nike

我试图弄清楚必须实现的 BluetoothGattCallback 中的处理程序是否在单独的线程上,或者它们是否需要及时返回。换句话说,我是否能够在 onCharacteristicChanged() 处理程序中进行任何冗长的计算,或者我是否应该将数据存储在队列中或调用一个单独的线程并立即返回?如果我没有快速从回调中返回(比如设备正在流式传输数据),是否有可能丢失数据?我没有这样的设备来测试以找出答案,但如果知道回调的设计方式会很好,这样我就会知道如何设计我的处理程序。

任何人都知道它是如何工作的,或者有足够的经验来猜测它是如何工作的?谢谢!

最佳答案

我在调用 connectGatt()(来自 onScanResult())时打印了 Thread.currentThread().getId(),并且在 onCharacteristicChanged()

这些是注释结果。

06-01 11:50:38.022  12205-12205/? D/MainActivity﹕ startScanning() in thread 1  // GUI thread is 1.
06-01 11:50:38.484 12205-12217/? D/MainActivity﹕ calling connectGatt in thread 371 // onScanResult() is called in a background thread.
06-01 11:50:39.877 12205-12233/? D/MainActivity﹕ Characteristic changed in thread 373 // onCharacteristicChanged() is called in a background threa.
06-01 11:50:40.906 12205-12234/? D/MainActivity﹕ Characteristic changed in thread 374 // Seems like there is a pool of three background threads.
06-01 11:50:41.876 12205-12217/? D/MainActivity﹕ Characteristic changed in thread 371
06-01 11:50:42.904 12205-12216/? D/MainActivity﹕ Characteristic changed in thread 370
06-01 11:50:43.878 12205-12233/? D/MainActivity﹕ Characteristic changed in thread 373
06-01 11:50:44.903 12205-12234/? D/MainActivity﹕ Characteristic changed in thread 374
06-01 11:50:45.878 12205-12217/? D/MainActivity﹕ Characteristic changed in thread 371

总而言之,似乎在三个后台线程之一中调用了 onCharacteristicChanged()。我用一个连接的设备和三个连接的设备对此进行了测试。在这两种情况下,它都使用了三个线程。

因此您可能不需要真的很快(以避免阻塞 GUI),但您仍然不应该花很长时间,因为您可能会用完线程池。

关于android - Android BluetoothGattCallback 是否需要及时返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24033935/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com