Vaadin UI分离异常

时间:2018-06-04 05:29:13

标签: vaadin

我正在使用Vaadin 7.7.10,并且在使用背景UIDetachedExceptionsThreads注释时,我在日志中看到了很多@Push

请建议如何正确释放资源以清理我的日志。

2 个答案:

答案 0 :(得分:2)

这是因为用户已关闭其浏览器窗口或标签页,这意味着特定的UI实例不再使用。

最好的方法通常是覆盖应用程序UI子类中的detach方法并在那里进行清理。请记得同时致电super.detach()

另一种方法是捕获UIDetachedException可能引发的UI.access并在此时进行清理。这种方法的缺点是,当UI被分离时,您不会立即收到通知,而只是在尝试使用它时才会收到通知。

答案 1 :(得分:2)

如果您在UI.access(..)中对已经分离的UI执行了某项操作,则会触发UIDetachedException。这很自然,例如,如果用户关闭了浏览器,或者网络中已经关闭了连接,那么UI已被分离。如果在您的情况下UIDetachedException由于这些原因而发生,则它是无害的。在这种情况下,您可以选中UI.isAttached(),如果false已分离则返回UIUI.isClosing()如果已UI已经分离,则可以避免乱扔垃圾被放入清理队列。