繁体   English   中英

如何在不去往/开始活动的情况下更改浏览器历史记录(gwt)

[英]how to change browser history without going to place/ starting activity (gwt)

在我的应用程序中,我有一个相对复杂的活动/地方。 在活动开始时解析状态(从历史令牌到模型)会导致一些服务器交互。 在用户交互中,活动仅更新模型的必要部分,因此保护一些服务器交互 - 活动/模型具有内部状态。

有没有办法在没有(重新)启动活动的情况下反映浏览器历史记录中的状态? History.newItem(token)也会导致活动开始)

更新克里斯的解决方案“几乎”有效,但另一个问题上升了:在我的ui中我有一个重置按钮(指向空标记的地方的链接)。 如果我点击ui周围令牌已更新,但现在重置按钮不起作用。 gwt认为它在同一个地方,所以它忽略了重置点击。 在此之前问题几乎相同:令牌和地点没有改变,因此重置按钮也不起作用。 GWT记录为“被要求返回同一个地方”

那么有没有办法让gwt重新启动活动而不管地点等价?

转到新位置,但让ActivityMapper返回相同的活动实例。 这样,活动就不会重新启动。
当地点从其他方面改变时,你必须找到更新活动的方法(例如浏览器历史记录)。 例如,请参阅GWT MVP更新Place更改的活动状态

有一个半解决方案,虽然我不想推荐它 ,但我想在这里添加它 - 只是为了警告这个解决方案的缺点:

您可以通过调用History.newItem(token, false)将标记添加到历史记录而不触发事件。

这是一个半解决方案,因为:

  • 它工作正常(只要你正确构建你的令牌)。
  • 还解决了性能问题的一部分:将令牌添加到历史记录时,不会重新启动活动。
  • 但是,如果用户在历史记录中前后移动,则性能问题仍然存在(因为那时,事件将再次触发)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM