我正在重建一个可以与蓝牙设备通信的应用程序。
我发现的代码在关闭连接后调用了这个奇怪的方法,
bluetoothGatt.disconnect();
将调用onStateChangeCallback。
方法就是这样;
private void refreshDeviceCache(final BluetoothGatt gatt) {
int cnt = 0;
boolean success = false;
try {
if (gatt != null) {
final Method refresh = gatt.getClass().getMethod("refresh");
if (refresh != null) {
success = (Boolean) refresh.invoke(gatt);
while (!success && cnt < 100) {
success = (Boolean) refresh.invoke(gatt);
cnt++;
}
Log.e(TAG, "retry refresh : " + cnt + " " + success);
}
}
} catch (Exception e) {
Log.e(TAG, "5", e);
}
}
我无法完全理解这段代码会做什么,但最后,它会在断开连接后减慢连接。它不会减慢断开连接速度。
我真的无法理解这一点,因为在我获得BluetoothProfile.STATE_DISCONNECTED之后,我将关闭bluetoothGatt,并在broadCastReceiver上取消绑定服务并关闭服务本身。
在连接阶段,将重新创建服务。
断开连接时该代码的哪一行可能会减慢连接速度?请帮帮我。