如何从MVP模式中的演示者中删除处理程序

时间:2013-07-19 13:41:02

标签: gwt mvp

我正在GWT应用程序中实现MVP模式。在每个历史记录标记更改时,我正在初始化演示者以获取相应的视图。如果用户导航到单个视图GridView(比如说)2次,那么相应的演示者GridViewPresenter(说)初始化2次(根据MVP模式。如果我们不将演示者作为singelton)。 喜欢

 Presenter presenter = new GridViewPresenter();

在这种情况下,此演示者中的所有事件都将注册并收听2次。如果不让我们的主持人singelton,我们怎么能避免这种情况。

1 个答案:

答案 0 :(得分:5)

您必须跟踪演示者的生命周期(在切换到新的生命周期之前,处理当前的演示者,以便取消注册其处理程序)。

或者,你可以使用Places&来自GWT的活动微框架就是这样:您的活动有明确的startonStop以及onCancel(异步启动时)。
GWT-Platform(GWT的 MVP框架)也有类似的生命周期。

另一种选择是让您的演示者在其视图上添加处理程序:视图管理其事件处理程序,并通过表示为接口的合同(实现该接口的演示者)通知演示者;对于给定的视图,一次只能有一个演示者(这样,新的演示者会覆盖前一个)。
管理演示者生命周期的优势在于演示者可以在不再使用时立即进行垃圾收集,而不是等待新的演示者在单例/长期视图中取代它们。