如何在Vaadin中检测浏览器的标签页或窗口何时关闭? 我的情况是我有一个后台线程,当用户在浏览器中输入或退出视图时启动和停止。根据导航器的更改侦听器的beforeViewChange和afterViewChange事件启动或停止线程。当我在应用程序中切换视图时,一切正常。
我的问题是如果后台线程的视图处于活动状态且用户关闭了浏览器选项卡或窗口,我不知道如何检测此闭包,因此我可以停止后台线程。目前,如果我关闭浏览器,后端线程将继续在服务器上运行。
答案 0 :(得分:6)
您可以在UI中添加DetachListener。当服务器错过来自客户端的三个连续心跳信号时,将发送DetachEvent。
addDetachListener(new DetachListener() {
@Override
public void detach(DetachEvent event) {
... closeBackgroundThread()
}
});
有关UI过期的详细信息,请参阅https://vaadin.com/docs/-/part/framework/application/application-lifecycle.html。