Android错误的通知包顺序
由于某些原因,在onCharacteristicChanged中接收到的可撤销通知的顺序错误。在windows上,相同设备和特征的数据包顺序是正确的。请帮我找出问题所在Android错误的通知包顺序,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,由于某些原因,在onCharacteristicChanged中接收到的可撤销通知的顺序错误。在windows上,相同设备和特征的数据包顺序是正确的。请帮我找出问题所在 @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { if (characteristic.getUuid().equals(BleConstants.
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
if (characteristic.getUuid().equals(BleConstants.MY_CHARACTERISTIC_UUID)) {
MyData data = MyDataConverter.convertData(characteristic.getValue());
Log.i("Data", String.valueOf(data.timeStamp));
}
}
日志
06-07 18:25:39.931 13488-14238/com.package.package I/Data﹕ 15942
06-07 18:25:39.936 13488-14238/com.package.package I/Data﹕ 15962
06-07 18:25:39.981 13488-13498/com.package.package I/Data﹕ 15746
06-07 18:25:39.986 13488-13498/com.package.package I/Data﹕ 15766
06-07 18:25:40.031 13488-13500/com.package.package I/Data﹕ 15786
06-07 18:25:40.031 13488-13500/com.package.package I/Data﹕ 15806
06-07 18:25:40.076 13488-14060/com.package.package I/Data﹕ 15827
06-07 18:25:40.081 13488-14060/com.package.package I/Data﹕ 15847
我假设在不同的线程中并发调用
onCharacteristicChanged
,因为通知来得如此之快,而且由于线程之间的时间差如此之小,所以哪个线程首先设法获得Log
函数的锁并发布数据就成了一个机会问题
因此,可能是随机的内部延迟导致数据以不同的顺序出现在日志屏幕上。我假设在不同的线程中同时调用
onCharacteristicChanged
,因为通知来得如此之快,而且线程之间的时间差如此之小,至于哪个线程首先设法获得Log
函数的锁并发布数据,这就成了一个机会问题
因此,可能是随机的内部延迟导致数据以不同的顺序出现在日志屏幕上