以一种识别方式处理多个侦听器

时间:2018-10-09 14:30:07

标签: java android interface callback listener

我为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);
 }
}

1 个答案:

答案 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方法仍然是抽象的,并且是实现所必需的。当然,这意味着您不能再在已经扩展了另一个类的类中实现侦听器。