Frage

Ich frage mich, ob es einen nicht trivialen Anwendungsfall für das gibt com.google.gwt.activity.shared.Activity#mayStop Methode.

  1. Der com.google.gwt.place.shared.PlaceController.Delegate#confirm ist eine blockierende, also können Sie keine andere verwenden Delegate, das verwendet Rückrufe.Ich weiß wirklich nicht, warum dies blockierend implementiert ist, da die GWT-Leute immer sagen, dass Benutzerinteraktionen asynchron gehandhabt werden sollten.
  2. Der mayStop methode wird immer aufgerufen.Auch wenn die ActivityManager würde das gleiche zurückgeben Activity und die Benutzeroberfläche würde sich nicht ändern.Die Aktivität muss also beispielsweise prüfen, ob der Benutzer nicht gespeicherte Änderungen hat und ob eine Ortsänderung wirklich dazu führen würde, dass die nicht gespeicherten Daten verworfen werden.Ich denke, diese Überprüfung könnte einfacher durchgeführt werden, bevor Sie anrufen placeController.goTo(new Place()).

Was meinst du?

War es hilfreich?

Lösung

  1. sehen http://code.google.com/p/google-web-toolkit/issues/detail?id=6228#c1 TL; DR: asynchrone Behandlung öffnet die Tür zu zu vielen Randfällen, Fehlern, Verwirrung und unterschiedlichen Bedürfnissen / Wünschen, wie es funktionieren soll.

  2. Die Aktivität, die das tut goTo ist nicht unbedingt derjenige, der einchecken muss mayStop.In dem Fall ist es, dann, wenn es die Überprüfung vor dem Ausführen der goTo (und dann in einen Staat zu überführen, in dem die mayStop wird zurückkehren null), dann gibt es in dem Fall eine andere Aktivität mit nicht gespeicherte Änderungen, wird dies dazu führen, dass zwei Bestätigungen an den Benutzer angefordert werden.
    Es ist auch möglich zu hören PlaceChangeRequestEvents und bedingter Aufruf setWarning, anstatt den Check-in zu machen mayStop.Auf diese Weise haben Sie Zugriff auf den Ort, zu dem Sie navigieren;aber es koppelt Ihre Aktivität mit den Orten und deren Zuordnung zu Aktivitäten (z.a aktivität auflisten könnte auf einem angezeigt werden details ort auf dem Desktop, aber nicht auf dem Handy);das liegt in der Verantwortung des ActivityMappers.
    Vergessen Sie auch nicht, dass die Navigation vom Browser ausgelöst werden kann (Benutzer navigiert im Browserverlauf).Die Sache ist:im Web hat der Benutzer die Kontrolle.
    Alles in allem ist es wahrscheinlich besser (und einfacher), einfach das zu tun goTos und verlassen Sie sich auf mayStop um Bestätigung zu bitten.(die Aktivität könnte auch die Auslösung von Schaltflächen / Links deaktivieren.) goTo in dem Fall gibt es nicht gespeicherte Änderungen, so dass die Navigation nur durch andere Aktivitäten ausgelöst werden konnte).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top