2008-10-30 4 views
5

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

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

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

Спасибо, JB

ответ

2

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

уничтожить() является последним из четырех "методов жизненного цикла" апплет Java (остальной Init(), старта() и остановки()). Их фактически вызывают в разное время в зависимости от вашего браузера и виртуальная машина. Если вы хотите точно знать, когда вызывается каждый, выполните каждый метод в вашем апплете, а System.out - некоторую обратную связь.

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

public void finalize() { 
    destroy(); 
} 
1

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

Это время, когда освежает, перемещается с помощью Backword < - и вперед ->

Смежные вопросы