У меня есть служба, в которой есть один экземпляр BluetoothGattCallback
public class MyService extends Service {
private BluetoothGattCallback callback;
@Override
public void onCreate() {
super.onCreate();
callback = new BluetoothGattCallback() {
@Override
public synchronized void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
Log.i("onConnectionStateChanged", "Status " + status);
Log.i("onConnectionStateChanged", "New State " + newState);
}
};
}
// registration of bluetooth adapter and blah blah blah
}
Когда я запускаю приложение, оно работает нормально, и обратный вызов вызывается только один раз, но после пары попыток он вызывается дважды.
Образцы журналов
10-22 13:29:18.731 26944-26961/redacted.lollipop I/onConnectionStateChange: Status 0
10-22 13:29:18.731 26944-26961/redacted.lollipop I/onConnectionStateChange: New State 2
10-22 13:29:18.731 26944-26961/redacted.lollipop I/onConnectionStateChange: Status 0
10-22 13:29:18.731 26944-26961/redacted.lollipop I/onConnectionStateChange: New State 2
Еще образцы журналов
10-22 13:29:48.836 26944-26961/redacted.lollipop I/onConnectionStateChange: Status 8
10-22 13:29:48.836 26944-26961/redacted.lollipop I/onConnectionStateChange: New State 0
10-22 13:29:48.850 26944-30763/redacted.lollipop I/onConnectionStateChange: Status 8
10-22 13:29:48.850 26944-30763/redacted.lollipop I/onConnectionStateChange: New State 0
И чем дольше приложение остается активным, тем чаще его вызывают. Как мне предотвратить это?
connectGatt
, который синхронизируется и блокируется самим обратным вызовом, например. синхронизированный (обратный вызов) {device.connectGatt (getBaseContext (), истина, обратный вызов, 2); } - person Kevin D.   schedule 22.10.2015