gwt - Activity.mayStop() 有多大意义?

标签 gwt gwt-activities

我想知道 com.google.gwt.activity.shared.Activity#mayStop 方法是否有任何重要的用例。

  1. com.google.gwt.place.shared.PlaceController.Delegate#confirm 是一个阻塞代理,因此您无法使用其他使用回调的 Delegate 。我真的不知道为什么要以阻塞方式实现,因为 GWT 的人总是说用户交互应该异步处理。
  2. 始终调用 mayStop 方法。即使 ActivityManager 返回相同的 Activity 并且 UI 也不会改变。因此,该事件必须检查例如用户是否有未保存的更改以及位置更改是否确实会导致丢弃未保存的数据。我认为在调用 placeController.goTo(new Place()) 之前可以更轻松地完成此检查。

你觉得怎么样?

最佳答案

  1. 参见http://code.google.com/p/google-web-toolkit/issues/detail?id=6228#c1 TL;DR:异步处理为太多的边缘情况、错误、困惑以及关于它应该如何工作的不同需求/愿望打开了大门。

  2. 执行 goTo 的事件不一定是需要在 mayStop 中进行检查的那个。在这种情况下,如果它在执行 goTo 之前进行检查(然后转换到 mayStop 将返回 null 的状态),然后在存在另一个具有未保存更改的事件的情况下,这将导致要求用户进行两次确认。
    也可以听PlaceChangeRequestEvent s 并有条件地调用 setWarning ,而不是在 mayStop 中进行检查。这样您就可以访问您要导航到的地方;但它将您的事件与地点及其到事件的映射结合起来(例如,列表事件可能会显示在桌面上的详细信息地点上,但不会在移动设备上显示);这是 ActivityMapper 的责任s.
    另外,不要忘记浏览器可以触发导航(用户在浏览器的历史记录中导航)。事实是:在网络上,用户处于控制之中。
    总而言之,简单地执行 goTo 可能更好(也更简单) s 并依赖 mayStop要求确认。 (如果有未保存的更改,该事件还可以禁用触发 goTo 的按钮/链接,因此导航只能由其他事件触发)。

关于gwt - Activity.mayStop() 有多大意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617062/

相关文章:

java - GWT 代码分割集成 : MVP and Activites/Places

java - GWT Places/Activities - 导航应该使用什么?

gwt - 如何: UiBinder + GWT MVP + multiple independent display areas

gwt - 在 GWT 中调用 native (C++) 代码

java - GET - 目前您无法在开发模式下引入新注释。请重新启动

java - 具有 gwt 和可序列化的抽象类?

java - 理解GWT AbstractActivity的start方法

gwt - 在 GWT 中使用查询字符串

gwt - 从 Struts 1.x 迁移到 GWT 2.x

java - 如何使用特定的 Widget 注入(inject) GWT Activity#start?