Android BluetoothGatt 超级方法?

Android BluetoothGatt super methods?

扩展时 BluetoothGattCallback 实现者应该调用超级方法吗?

示例:

public void onCharacteristicWrite(BluetoothGatt gatt,
                                  BluetoothGattCharacteristic characteristic, 
                                  int status) {
     // Is this needed?
     super.onCharacteristicWrite(gatt, characteristic, status);

     ...
}

在这种情况下,似乎没有必要调用超级方法。 BluetoothGattCallback class 是抽象的,它的所有方法都是空的。

编辑:

BluetoothGattCallback 是 Android SDK 的一部分,位于本机层之上。 它的方法是从 BluetoothGatt class 调用的,它处理来自本机层的回调并将它们转换为对 BluetoothGattCallback 方法的调用。

如果您想知道为什么 BluetoothGattCallback 是一个抽象的 class,具有空的实现而不是接口。可能是因为它的回调方法太多了,所以实现一个接口会导致代码不必要的膨胀。

编辑2:

这方面的官方参考并不难获得。 Compatiblity definition 硬件制造商声明他们必须以 Android SDK 中声明的形式实施 Android API。

注意底层native层是通过Android的Binder机制连接的

看过BluetoothGattCallBack的源码后,好像不需要调用super方法。

因为BluetoothGattCallBack是一个抽象class并且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) {
}