2011-04-17 15 views
5

Estoy escribiendo una pequeña aplicación Java usando Swing. La aplicación también tiene un componente de red.Limpieza antes de salir de la aplicación Java

Quiero ejecutar algún código antes de salir (cerrar canales, claves, etc.). Hay una manera de hacerlo, sin agregar un botón Salir en mi interfaz, en el que hacer mi limpieza, luego hacer System.exit()?

Respuesta

5

Debería poder hacer lo que quiera en windowClosing(), que se muestra en here.

8

Puede usar la función Runtime#addShutdownHook para agregar una función a ejecutar cuando la JVM se apaga.

+0

IMO esta es la mejor respuesta ... windowClosing() no se llamará si su aplicación está configurada en EXIT en lugar de DISPOSE en la ventana cerrada. No se garantiza que se llame en todos los casos, por lo que no es tan efectivo para garantizar que se limpien sus recursos. – teh1

1

'Cerrar teclas': SelectionKeys? No necesitas hacer nada al respecto. Al cerrar el canal, se cancelan todas sus SelectionKeys automáticamente. Y a menos que tenga datos pendientes que necesita para descargar, tampoco es necesario que cierre los canales, el sistema operativo hará eso por usted.

+0

Creo que tenía algunos datos pendientes o algo así, porque obtendría un comportamiento extraño en varias ejecuciones de la aplicación. Ahora que hago una limpieza adecuada, parece que ha vuelto a la normalidad. – adivasile

Cuestiones relacionadas