2008-10-30 21 views
5

Supongamos que tengo un applet ejecutándose dentro de una página en un navegador. ¿Qué sucede cuando el navegador está cerrado por el usuario?¿Qué le sucede a un applet cuando el navegador está cerrado?

¿Se notifica al applet para que pueda realizar algún tipo de acción cerrada de su lado (cerrar conexiones abiertas a un servidor, limpiar variables estáticas, ...)?

Además, supongo que se aplicaría el mismo comportamiento para una actualización de página o navegación de página (en lugar de navegador cerrado). El navegador permanece abierto pero el applet se ha ido. Aunque cuando cierras el navegador también cierras la JVM, así que no estoy seguro en este momento.

Gracias, JB

Respuesta

2

Sí, el método destroy() se debe llamar antes de que el navegador descarga el objeto .

destroy() es el último de los cuatro "métodos de ciclo de vida" del applet de Java (los otros son init(), inicio(), y stop()). En realidad se llaman en diferentes momentos dependiendo de su navegador y máquina virtual. Si desea saber exactamente cuándo se llama a cada uno, implemente cada método dentro de su applet y System.out algunos comentarios.

Idealmente, destroy() debería ser llamado por el entorno, y solo debe llamarse una vez. Si parece que no se está llamando a destroy(), puede declarar un método público finalize(), que llama a destroy. También podría tratar de llamar a destroy() desde JavaScript mientras el objeto de la ventana se descarga, pero de nuevo, asegúrese de no estar invocando destroy() innecesariamente.

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

La mayoría de las veces se llamará a destroy, pero no tiene tiempo suficiente para realizar las tareas necesarias en caso de cerrar la ventana.

Hace suficiente tiempo al actualizar, navegando con Backword < - y Adelante ->

Cuestiones relacionadas