我为Ble-Device开发了一个Android应用程序,并实现了 Interface 来监听写入,读取和订阅操作。我将所有侦听器实例添加到 List 并触发 Interface 方法,如下所示:
figsize=(8, 24)
但是问题是,所有具有活动侦听器的 ReadWriteEvents 都会被触发。那么,是否存在某种标识可以触发特定的侦听器?这样我就可以做这样的事情:
readWriteEvent = new BleDevice.ReadWriteEvent(true, status, characteristic.getValue());
for (ReadWriteListener listener : readWriteListener) {
listener.onEvent(readWriteEvent);
}
还是我的问题有更好的解决方案?这是我的 Interface 的外观:
for (ReadWriteListener listener : readWriteListener) {
if (listener.getUuid() == characteristic.getUuid()) {
listener.onEvent(readWriteEvent);
}
}
答案 0 :(得分:1)
改为使用抽象类:
public abstract class ReadWriteListener {
private int uid;
public ReadWriteListener(int uid) {
this.uid = uid;
}
public int getUid() {
return uid; //or just make uid final and public
}
public abstract void onEvent(BleDevice.ReadWriteEvent event);
}
这样,在构造它时,您可以传递UID并检索它,而onEvent
方法仍然是抽象的,并且是实现所必需的。当然,这意味着您不能再在已经扩展了另一个类的类中实现侦听器。