Jump to content

[Java] Entfernen aller Listener (Improvement?)


Recommended Posts

Guten Morgen alle zusammen

ich möchte auf meinen Bricklets die Listener entfernen, dazu gibt es (leider) nur eine Methode, wobei der entfernende Listener bekannt sein muss. Dies ist nicht immer der Fall, v.a. wenn man anonyme Klassen für die Listener verwendet.

 

Ich habe auch keine Methoden gefunden, um an alle Listeners eines Bricklets zu kommen! Wäre es möglich, entsprechende Methoden aufzunehmen?

Zum Beispiel removeAllTemperatureListeners() oder getAllTemperatureListeners() für das Temperatur-Bricklet.

Link zu diesem Kommentar
Share on other sites

Wichtig wäre, dass diese Infos dann aber auch direkt vom Brick/Bricklet kommen und nicht aus der Liste in den Bindings.

 

Die Listeners selbst müssen aus den Bindings kommen. Ich vermute nicht, dass die Brick/Bricklets überhaupt wissen, dass es Listeners hat? Ansonsten könnte man noch so Methoden wie hasTemperatureListener() machen, welche halt mit true/false antworten.

Link zu diesem Kommentar
Share on other sites

Es ist zweiteilig:

 

Das tatsächliche Bricklet (also die Hardware) sendet dann die Callbacks aus, wenn beispielsweise bei der Temperatur die CallbackPeriod gesetzt ist. Alles weitere interessiert das Bricklet nicht.

 

Deine Bindings hingegen merken sich nun welche Listener jeweils registriert sind und stellen das jeweils zu sobald eine Nachricht vom Bricklet kommt.

 

Methoden zum einzelnen Entfernen sollten meiner Erinnerung nach gut möglich sein. Bei den Is*-Methoden würdest du halt abfragen ob gerade ein Listener registriert ist, aber NICHT ob auch die entsprechende Period einen Wert > 0 hat. Das müsstest du dann in zwei Abfragen erledigen wenn du beides wissen willst.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...