我正在使用 Vaadin 7.7.10,并且在使用后台 Threads
和 @Push
注解时,在日志中看到许多 UIDetachedExceptions
。
请建议如何正确释放资源以清除我的日志。
我正在使用 Vaadin 7.7.10,并且在使用后台 Threads
和 @Push
注解时,在日志中看到许多 UIDetachedExceptions
。
请建议如何正确释放资源以清除我的日志。
UI.access(..)
中对已分离的UI
进行操作,将会触发UIDetachedException
。这是很自然的,例如,如果用户关闭了浏览器,或者网络上出现了一些关闭连接的情况,因此UI
已经被分离。如果在您的情况下,UIDetachedException
是由这些原因引起的,那么它是无害的。在这种情况下,您可以通过检查UI.isAttached()
来避免在日志中生成垃圾,如果UI
已经被分离,则返回false
,如果UI
已经被放入清理队列,则返回UI.isClosing()
。ui.isAttached()
和 ui.access(handler)
之间的时间段内,UI 可能会变得分离。您仍然可以解决大多数异常,但不是所有异常。 - Leif ÅstrandComponent
子类中通过重写com.vaadin.flow.component.Component#onDetach
方法来执行清理操作是否也是可能的? - abogerdetach
方法并在那里进行清理。只需记得调用super.detach()
。UI.access
抛出的UIDetachedException
并在那时进行清理。这种方法的缺点是当UI被分离时,您不能立即收到通知,而只有在尝试对其进行操作时才会收到通知。onDetach
而不是detach
。在这些版本中,不建议子类化UI
,而是使用内置实现并使用addDetachListener
。