У меня есть простой класс пользовательского интерфейса
public class HelloWorldUI extends UI {
@Override
protected void init(VaadinRequest request) {
System.out.println("Initialized !");
final VerticalLayout layout = new VerticalLayout();
layout.addComponent(new Label("Hello World !"));
setContent(layout);
}
@Override
public void detach() {
System.out.println("Detach !");
super.detach();
}
@Override
public void attach() {
System.out.println("Attach !");
super.attach();
}
}
Когда мой пользовательский интерфейс загружается впервые, я вижу выходные данные на своей консоли как
Прикрепить !
Инициализировано !
Это нормально, и это то, что я ожидал. Но когда я обновляю браузер, мои выходные данные консоли были
Прикрепить !
Инициализировано !
Отсоединить !
Удивительно ! Я думаю, что Detach !
может быть создан первым, потому что (как я думаю) при обновлении браузера должен вызываться метод detach()
, а attach()
, init()
должны следовать. Но на самом деле метод detach()
будет вызываться после метода attach()
. Что не так с моим мышлением?
detach
вызывается не всегда в каждой ситуации. См. эту публикацию на форуме Анри Сары. Таким образом, вы не должны полагаться на это как на способ очистки ресурсов, закрытия соединений, остановки фоновых потоков и тому подобного. - person Basil Bourque   schedule 12.01.2015