GWT:终止对象并删除其事件处理程序

Art*_*uro 1 java events gwt event-handling

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

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

Mar*_*tin 6

处理程序可能仍然存在,因为gc没有绕过它们来破坏它们.如果听众不再继续存在很重要,那么他们需要取消注册.

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

  • 事实上,`finalize()`方法永远不会在GWT中调用,因为它在JavaScript中不存在,因此无法模拟. (3认同)