扩展BluetoothGattCallback
时,实现者应该调用超级方法吗?
示例:
public void onCharacteristicWrite(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
// Is this needed?
super.onCharacteristicWrite(gatt, characteristic, status);
...
}
答案 0 :(得分:2)
在这种情况下,似乎没有必要调用超级方法。
BluetoothGattCallback
类是抽象的,它的所有方法都是空的。
修改强>
BluetoothGattCallback
是Android SDK的一部分,位于原生图层之上。
它的方法是从BluetoothGatt
类调用的,它处理来自本机层的回调并将它们转换为对BluetoothGattCallback
方法的调用。
如果你想知道为什么BluetoothGattCallback
是一个具有空实现而不是接口的抽象类。可能是因为它有太多的回调方法,所以实现一个接口会导致代码中不必要的膨胀。
<强> EDIT2:强>
这方面的官方参考有点难以获得。硬件制造商Compatiblity definition声明他们必须以Android SDK中声明的形式实现Android API。
请注意,底层原生图层是通过Android的Binder机制连接的。
答案 1 :(得分:0)
在观看BluetoothGattCallBack
的源代码后,似乎无需调用super方法。
对于BluetoothGattCallBack
是一个抽象类,onCharacteristicWrite
也是一个空方法。
以下是它的源代码:
/**
* Callback indicating the result of a characteristic write operation.
*
* <p>If this callback is invoked while a reliable write transaction is
* in progress, the value of the characteristic represents the value
* reported by the remote device. An application should compare this
* value to the desired value to be written. If the values don't match,
* the application must abort the reliable write transaction.
*
* @param gatt GATT client invoked {@link BluetoothGatt#writeCharacteristic}
* @param characteristic Characteristic that was written to the associated
* remote device.
* @param status The result of the write operation
* {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds.
*/
public void onCharacteristicWrite(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
}