1

在 GWT 中,我有MyClass注册一些事件处理程序的类。有一个对象 ( object1) MyClass,在特定时刻,我想完成并使其处理程序停止侦听,因为之后我将创建一个不同的MyClass对象 ( object2)。

我怎样才能做到这一点?我已经尝试过object1 = null,但它的处理程序一直在听(至少有一段时间)。

4

1 回答 1

5

处理程序可能仍然存在,因为 gc 没有绕过销毁它们。如果侦听器不继续存在很重要,则需要注销它们。

一种方法是取消注册 HandlerRegistration。例如,addClickHandler返回一个可以取消注册的HandlerRegistration 。何时以及如何执行此操作取决于您的 GUI 类。您可以将注销放在您的 finalize 方法中,但您可能会发现这些方法被非常偶尔地调用,因为 gc 并且当然因为这不是 java 而是 javaScript。因此,请考虑将它们放在您的 gui 元素onDetachonUnload的分离或破坏方法中。

于 2012-11-14T12:30:49.033 回答