Что происходит с апплетом, когда браузер закрыт? - PullRequest
5 голосов
/ 30 октября 2008

Предположим, у меня есть апплет, работающий на странице в браузере. Что происходит, когда браузер закрыт пользователем?

Уведомлен ли апплет, чтобы он мог выполнить какое-либо закрывающее действие на своей стороне (закрытие соединений, открытых на сервере, очистка статических переменных, ...)?

Кроме того, я предполагаю, что такое же поведение будет применяться для обновления страницы или навигации по странице (вместо закрытия браузера). Браузер остается открытым, но апплет пропал. Хотя когда вы закрываете браузер, вы также закрываете JVM, поэтому я не уверен в этом.

Спасибо, JB

Ответы [ 2 ]

2 голосов
/ 30 октября 2008

Да, метод destroy () должен быть вызван до того, как браузер выгружает объект .

destroy () является последним из четырех « методов жизненного цикла » апплета Java (остальные init () , start () и stop () ). Они на самом деле вызываются в разное время в зависимости от вашего браузера и виртуальной машины . Если вы хотите точно знать, когда вызывается каждый из них, реализуйте каждый метод в своем апплете и отправляйте System.out некоторую обратную связь.

В идеале destroy () должен быть вызван средой и вызываться только один раз. Если кажется, что destroy () не вызывается, вы можете объявить открытый метод finalize (), который вызывает destroy. Вы также можете попытаться вызвать destroy () из javascript, когда объект окна выгружается, но опять же, убедитесь, что вы не вызываете destroy () без необходимости.

public void finalize () {
    destroy();
}
1 голос
/ 18 ноября 2008

В большинстве случаев вызывается метод destroy, но у него недостаточно времени для выполнения необходимых задач в случае закрытия окна.

Достаточно времени при обновлении, навигации с помощью Backword <- и вперед ->

...