Насколько значимым является Activity.mayStop ()? - PullRequest
2 голосов
/ 08 марта 2012

Мне интересно, есть ли какой-нибудь нетривиальный вариант использования метода com.google.gwt.activity.shared.Activity#mayStop.

  1. com.google.gwt.place.shared.PlaceController.Delegate#confirm является блокирующим, поэтому вы не можете использовать другой Delegate, который использует обратные вызовы. Я действительно не знаю, почему это реализовано блокирующим образом, потому что ребята из GWT всегда говорят, что пользовательские взаимодействия должны обрабатываться асинхронно.
  2. Метод mayStop вызывается всегда. Даже если ActivityManager вернет тот же Activity, и пользовательский интерфейс не изменится. Таким образом, действие должно проверять, например, есть ли у пользователя несохраненные изменения и действительно ли изменение места приведет к отбрасыванию несохраненных данных. Я думаю, что эту проверку можно было бы сделать проще перед вызовом placeController.goTo(new Place()).

Что вы думаете?

1 Ответ

4 голосов
/ 08 марта 2012
  1. * 1002.
  2. Деятельность, выполняющая goTo, не обязательно должна быть проверена в mayStop. Если это так, то если он выполняет проверку перед выполнением goTo (и затем переходит в состояние, в котором mayStop вернет null), то в случае есть другое действие с несохраненным изменения , это приведет к тому, что пользователю будет запрошено два подтверждения.
    Также возможно прослушать PlaceChangeRequestEvent s и условно позвонить setWarning, вместо того, чтобы делать проверку в mayStop. Таким образом, у вас есть доступ к месту, куда вы направляетесь; но она связывает вашу деятельность с местами и их сопоставлением с действиями (например, список действий может отображаться в подробном месте на рабочем столе, но не на мобильном телефоне); это ответственность ActivityMapper с.
    Кроме того, не забывайте, что навигация может быть запущена браузером (навигация пользователя в истории браузера). Дело в том, что в Интернете пользователь контролирует.
    В целом, вероятно, лучше (и проще) просто выполнить goTo s и положиться на mayStop, чтобы запросить подтверждение. (действие может также отключить кнопки / ссылки, запускающие goTo в случае, если есть несохраненные изменения , поэтому навигация может быть вызвана только другими действиями).

...