我正在开发一个 android 应用程序,它高频接收来自 ble 通知的数据,在屏幕上打印数据并将数据发送到其他外围设备。
这是我的情况:
onCharacteristicChanged 回调在 10hz 接收一个名为“ value ”的字节数组,并将数据解包到一些 float 和 int 变量中
与 handlerThread 关联的 Handler 每 30hz 启动一个 Runnable。此可运行对象使用从value解包的变量,将新数据保存在一些变量中并将广播消息发送到 UX
- 每 10hz 的另一个线程使用步骤 1 和 2 中保存的数据对此变量进行一些数学运算并在特征上写入数据。
在上面的步骤中,我保存并使用了 float、double 和 int 变量。
我害怕处理并发,我正在考虑在步骤 2 和 3 中使用相同的处理程序线程来解决并发问题。但是当另一个通知到达时,我认为存在竞争条件问题:/
其他问题: oncharacteristicchanged 在哪个线程执行?
我的问题的更多信息: 在 oncharacteristicchanged 到达新字节数组(以 10hz 频率)中,我在变量中解压缩数据,在其他线程 B(在 30hz)中使用此数据进行一些计算:发送广播到 ux 并将结果保存在其他一些变量;线程 C 使用线程 B 的结果,它进行一些其他计算并以 10hz 写入特性。
oncharacteristicchanged -> 线程 B -> 线程 C
但我不能停止 oncharacteristicchanged 因为我不知道它在哪个线程中执行..
你