【问题标题】:ActivityMapper, dealing with regions which don't change a lotActivityMapper,处理变化不大的区域
【发布时间】:2015-05-17 18:35:46
【问题描述】:

我是 GWT 的新手,最近我在我的代码中添加了 Activities、Places 和 ActivityMappers。每个区域都有一个 ActivityManager-ActivityMapper。像标题或菜单这样的区域没有太大变化,所以我必须在 ActivityMapper 中编写大量样板代码,以便每次加载相同的 Presenter 但使用不同的构造函数。对于每个可能的地方,我必须为 Presenter 编写另一个构造函数,以便获取 ActivityMapper 给出的实例。有什么方法可以更轻松地做到这一点?此外,我对每次我们搬到一个新地方时都创建一个新的 Presenter 的想法不满意(即使你要加载同一个 Presenter)。事实上,我对此有一个大问题,因为我的活动永远不会消失,而且他们会不断接收事件。

【问题讨论】:

  • 我已经(临时)解决了有关拥有同一个 Presenter 的多个实例的问题。我还有他们,他们没有完成。但至少他们不会从视图中收到更多事件。对于绑定到视图的每个句柄,我都使用了 HandlerRegistration 类。像这样:handlerRegistration = new HandlerRegistrarion();然后在 Activity 的 mayStop() 方法中我放了这个:handlerRegistration.removeHandler();

标签: gwt activity-manager gwt-activities


【解决方案1】:

ActivityMapper 返回与之前完全相同的 Activity 实例(引用相等,即 ==,而不是 equals())时,则不会重新启动活动,并且 区域没有被触及。这是针对那些不经常更改的区域情况(例如标题或菜单,或主从设置中的 master 区域)的故意优化。这也是CachingActivityMapper(和FilteredActivityMapper,专门设计用于在主-详细信息设置中与CachingActivityMapper 一起使用)的原因

在您的情况下,您似乎在对自己强加一个规则,使您难以利用此优化:您将当前位置传递给活动的构造函数,没有明显的原因。

【讨论】:

  • 您说得再正确不过了。将当前位置传递给我的活动是没有意义的。关于优化,我以前没有听说过。我已经更改了代码,现在运行良好。
猜你喜欢
  • 2016-08-30
  • 2012-06-11
  • 2012-03-22
  • 2013-07-04
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多