genannt Ich habe eine KeyUpHandler
zu einem Button
Objekt wie folgt hinzugefügt:GWT keyUpHandler wird mehrmals statt einer
button.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(final KeyUpEvent event1) {
if (event.isDownArrow()) {
counter++;
}
}
});
Allerdings, wenn ich für Schritt mit SuperDev Modus Schritt debuggen, gibt es zwei Anrufe an die onKeyUp
wobei der erste Aufruf immer counter
initial ist (0 in diesem Fall) und der zweite Aufruf hat den letzten -hielten-Wert von counter
. Die Methode, bei der ich die Logik onKeyUp
hinzugefügt habe, ist auch als synchronized
gekennzeichnet. Ich habe auch versucht, removeHandler()
Methode von HandlerRegistration
direkt nach onKeyUp
aufgerufen wird. Das Ergebnis war, dass die erwähnten zwei Anrufe nach dem ersten Tastendruckereignis auftraten, aber als ich ein weiteres Tastendruckereignis ausführte, passierte nur ein weiterer Anruf und es gab keinen weiteren Tastendruckereignisbereich. Ich gehe davon aus, dass dies mit dem Superdev-Modus etwas zu tun hat oder nach der Kompilierung ein interner Overhead entsteht. Was ist der richtige Weg, Event-Handler bei GWT hinzuzufügen? Müssen wir uns immer um jeden Handler kümmern, indem wir removeHandler()
Methode der HandlerRegistration aufrufen?
Fügen Sie den Handler mehrmals hinzu? – Baz
Ja, aber verschiedene Handler - MouseUpHandler und KeyUpHandler. Ich füge den KeyUpHandler jedoch über ein Runnable hinzu, während MouseUpHandler hinzugefügt wird, wenn ein Button-Objekt erstellt wird. Ich habe auch festgestellt, dass ClickHandler für Tastatur- und Mausereignisse aufgerufen wird. – baris
Der von Ihnen erstellte Handler ruft in einer beliebigen Schleife auf? –