Я ищу хорошее решение для рефакторинга архитектуры BLE, которое было разработано моим коллегой.Область действия кода заключается в том, чтобы поместить соединение GATT в Службу, но ничего не делать с жизненным циклом Службы. Ниже приведено описание onStartCommand Службы:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
, тогда код выглядит следующим образомгенерация общедоступной функции с именем «connect» в Сервис для подключения GATT через контекст Сервиса, ниже эта функция выглядит следующим образом:
public boolean connect(String address) {
if (mBluetoothAdapter == null || address == null) {
return false;
}
BluetoothGatt bluetoothGatt = null;
BluetoothDevice bluetoothDevice = mBluetoothAdapter.getRemoteDevice(address);
if (bluetoothDevice == null) {
Log.w(TAG, "Device not found. Unable to connect.");
return false;
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
bluetoothGatt = bluetoothDevice.connectGatt(this, false, createGattCallback(address));
} else {
bluetoothGatt = bluetoothDevice.connectGatt(this, false, createGattCallback(address),
BluetoothDevice.TRANSPORT_LE);
if (null != bluetoothGatt)
bluetoothGatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH);
}
return true;
}
ну, это очень странно для меня, потому что все звучит так "Вы никогда не используете жизненный цикл Сервиса, но всегда используете контекст Сервиса. "
И затем код сохраняет объект gatt как переменную-член в Сервисе, пока соединение BLE не будет разорвано, также генерируетнекоторые общедоступные методы, такие как написание характеристики и разъединение для связи с устройством Bluetooth через объект gatt, поэтому я думаю, что весь код ничего не использует в функции Service, а только вводит некоторые открытые методы в Service.
У меня есть несколько вопросовниже:
- Должен ли я объединить архитектуру Гатта в Сервис?
- Как я уже упоминал выше, Гатт использовал контекст Сервиса, что если я сохраню код в таком виде и что произойдет, когда Сервис будет уничтоженно Гатт все еще подключен?
- Есть ли хорошая идея для архитектуры ГАТТ?