reales - Función de llamada cuando el programa sale en java
libro de android studio en español pdf (4)
¿Estás creando una aplicación GUI independiente (es decir, Swing)?
De ser así, debería considerar cómo está brindando opciones a sus usuarios sobre cómo salir de la aplicación. A saber, si va a haber un menú de Archivo, esperaría que haya una opción de menú "Salir". Además, si el usuario cierra la última ventana en la aplicación, también esperaría que salga de la aplicación. En ambos casos, debe llamar al código que gestiona el guardado de las preferencias del usuario.
Me gustaría guardar la configuración de los programas cada vez que el usuario sale del programa. Entonces necesito una forma de llamar a una función cuando el usuario abandona el programa. ¿Cómo puedo hacer eso?
Estoy usando Java 1.5.
Agregando un gancho de cierre addShutdownHook (java.lang.Thread) es probablemente lo que buscas. Sin embargo, hay problemas con ese enfoque:
- Perderá los cambios si el programa aborta de forma descontrolada (es decir, si se cancela)
- Perderá los cambios si hay errores (permiso denegado, disco lleno, errores de red)
Por lo tanto, sería mejor guardar la configuración de inmediato (posiblemente en un hilo adicional, para evitar tiempos de espera).
Puede agregar un gancho de cierre a su aplicación haciendo lo siguiente:
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
// what you want to do
}
}));
Esto es básicamente equivalente a tener un bloque try {} finally {} alrededor de todo el programa, y básicamente abarca lo que está en el bloque finally.
Por favor, tenga en cuenta las advertencias !
Usar Runtime.getRuntime (). AddShutdownHook () es ciertamente una forma de hacerlo, pero si está escribiendo aplicaciones Swing, le recomiendo que consulte JSR 296 (Swing Application Framework)
Aquí hay un buen artículo sobre los conceptos básicos: http://java.sun.com/developer/technicalArticles/javase/swingappfr/ .
La implementación de referencia de JSR proporciona el tipo de características que está buscando en un nivel de abstracción más alto que la adición de ganchos de apagado.
Aquí está la implementación de referencia: https://appframework.dev.java.net/