2016-08-26 1 views
2

Vaadin에서 브라우저의 탭이나 창을 닫으면 어떻게 감지합니까?
내 상황은 사용자가 브라우저에서보기를 시작하거나 종료 할 때 시작되고 중지되는 백그라운드 스레드가 있다는 것입니다. 스레드는 탐색기의 변경 수신기의 beforeViewChange 및 afterViewChange 이벤트를 기반으로 시작되거나 중지됩니다. 보기간에 전환 할 때 응용 프로그램 내에서이 모든 것이 정상적으로 작동합니다.Vaadin 응용 프로그램에서 닫는 브라우저 감지

배경 스레드가있는보기가 활성화되어 있고 사용자가 브라우저 탭이나 창을 닫으면이 클로저를 감지하는 방법을 모르므로 배경 스레드를 멈출 수 있습니다. 현재 브라우저를 닫으면 백엔드 스레드가 서버에서 계속 실행됩니다.

답변

3

UI에 DetachListener를 추가 할 수 있습니다. 서버가 클라이언트에서 세 개의 연속 하트 비트 신호를 놓친 경우 DetachEvent가 전송됩니다.

addDetachListener(new DetachListener() { 
    @Override 
    public void detach(DetachEvent event) { 
    ... closeBackgroundThread() 
    } 
}); 

UI 만료에 대한 자세한 내용은 https://vaadin.com/docs/-/part/framework/application/application-lifecycle.html을 참조하십시오.

+0

이 작업은 web.xml에서 context-param의 heatbeatInterval 및 closeIdleSession 값을 조정해야했습니다. https://vaadin.com/wiki/-/wiki/Main/Cleaning+up+resources+in+an+UI를 참조하십시오. –

관련 문제