- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想在第一次收到事件时删除 GWT 事件处理程序。我还想避免因跟踪并非真正必要的注册对象而污染我的类(class)。我目前将其编码为:
final HandlerRegistration[] registrationRef = new HandlerRegistration[1];registrationRef[0] = dialog.addFooHandler(new FooHandler(){ public void onFoo(FooEvent event) { HandlerRegistration removeMe = registrationRef[0]; if(removeMe != null) { removeMe.removeHandler(); } // do stuff here }});
但是使用 registrationRef 会降低代码的可读性。有没有更好的方法在不向我的类中添加变量的情况下执行此操作?
最佳答案
我只是让 HandlerRegistration
对象成为封闭类的一个字段,这样你就不会被编译器打扰,而且它比改组数组和其他东西更“优雅”:
public class TestWidget extends Composite {
//...
HandlerRegistration handler;
public TestWidget() {
// ...
handler = button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// ...
handler.removeHandler();
}
});
}
}
关于java - GWT removeHandler 在第一个事件通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2614355/
我在很多答案中都看到了这一点,但我无法弄清楚它是如何工作的。 它通常是这样的(伪代码): UIElement.AddHandler(routedEvent, new EventHandler(hand
如何将 RemoveHandler 与匿名方法一起使用? 这是我为 MyClass 类的 MyEvent 事件添加处理程序的方法: AddHandler MyClass.MyEvent, Sub()
在开发过程中,我使用 python 日志记录模块。例如,在出现未处理的异常后,我想重新运行程序并重新初始化日志记录。由于某种原因,我似乎无法从日志实例中删除所有处理程序。尽管如此,它从未被删除。 im
我正在使用 WeakEventManager 类以订阅 C# 中的事件。事件订阅工作正常,但是调用 WeakEventManager.RemoveHandler 来自Task并不总是删除处理程序 -
我想在第一次收到事件时删除 GWT 事件处理程序。我还想避免因跟踪并非真正必要的注册对象而污染我的类(class)。我目前将其编码为: final HandlerRegistration[] regi
使用AddHandler方法,如果我从不使用RemoveHandler,在某些条件和情况下会导致内存泄漏吗?我不太确定这件事的真实性。 还有其他导致内存泄漏的原因吗?这些原因仅在 VB 中存在,而在
从事件创建可观察对象时,看起来以下是最常见的方式: var o = Observable.FromEventPattern(h => source.Event += h,
我正在追踪某些应用程序中的内存泄漏。许多表单共享相同的 Spellchecker 对象,因此任何单独的表单都无法生存。我知道如果没有正确删除处理程序事件,这可能会导致内存泄漏。 AddHandler
注意!!! 您在发布的代码中看到的 for-each 迭代器不会抛出此异常!!! 我在我的 Android 应用程序中遇到了一个非常奇怪的 ConcurrentModificationExceptio
我正在尝试调试别人的 Python 代码中的异常,但我不是 Python 专家。该代码尝试刷新并删除标准 Python 记录器上的所有处理程序: def restart_logging(logger_
我是一名优秀的程序员,十分优秀!