我正在使用Vaadin 7.7.10,并且在使用背景UIDetachedExceptions
和Threads
注释时,我在日志中看到了很多@Push
。
请建议如何正确释放资源以清理我的日志。
答案 0 :(得分:2)
这是因为用户已关闭其浏览器窗口或标签页,这意味着特定的UI实例不再使用。
最好的方法通常是覆盖应用程序UI子类中的detach
方法并在那里进行清理。请记得同时致电super.detach()
。
另一种方法是捕获UIDetachedException
可能引发的UI.access
并在此时进行清理。这种方法的缺点是,当UI被分离时,您不会立即收到通知,而只是在尝试使用它时才会收到通知。
答案 1 :(得分:2)
如果您在UI.access(..)
中对已经分离的UI
执行了某项操作,则会触发UIDetachedException
。这很自然,例如,如果用户关闭了浏览器,或者网络中已经关闭了连接,那么UI
已被分离。如果在您的情况下UIDetachedException
由于这些原因而发生,则它是无害的。在这种情况下,您可以选中UI.isAttached()
,如果false
已分离则返回UI
,UI.isClosing()
如果已UI
已经分离,则可以避免乱扔垃圾被放入清理队列。