在 GWT 中,我有MyClass
注册一些事件处理程序的类。有一个对象 ( object1
) MyClass
,在特定时刻,我想完成并使其处理程序停止侦听,因为之后我将创建一个不同的MyClass
对象 ( object2
)。
我怎样才能做到这一点?我已经尝试过object1 = null
,但它的处理程序一直在听(至少有一段时间)。
在 GWT 中,我有MyClass
注册一些事件处理程序的类。有一个对象 ( object1
) MyClass
,在特定时刻,我想完成并使其处理程序停止侦听,因为之后我将创建一个不同的MyClass
对象 ( object2
)。
我怎样才能做到这一点?我已经尝试过object1 = null
,但它的处理程序一直在听(至少有一段时间)。
处理程序可能仍然存在,因为 gc 没有绕过销毁它们。如果侦听器不继续存在很重要,则需要注销它们。
一种方法是取消注册 HandlerRegistration。例如,addClickHandler返回一个可以取消注册的HandlerRegistration 。何时以及如何执行此操作取决于您的 GUI 类。您可以将注销放在您的 finalize 方法中,但您可能会发现这些方法被非常偶尔地调用,因为 gc 并且当然因为这不是 java 而是 javaScript。因此,请考虑将它们放在您的 gui 元素onDetach或onUnload的分离或破坏方法中。