Domanda

Vorrei salvare le impostazioni di programmi ogni volta che l'utente chiude il programma.Quindi ho bisogno di un modo per chiamare una funzione quando l'utente chiude il programma.Come faccio a fare che?

Sto usando Java 1.5.

È stato utile?

Soluzione

È possibile aggiungere un arresto gancio per l'applicazione, eseguire le operazioni seguenti:

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
    public void run() {
        // what you want to do
    }
}));

Questo è sostanzialmente equivalente ad avere un try {} finally {} blocco intorno l'intero programma, e fondamentalmente comprende ciò che è nel blocco finally.

Si prega di notare il avvertenze però!

Altri suggerimenti

L'aggiunta di un gancio di arresto addShutdownHook(java.lang.Thread) è probabilmente ciò che cercate.Ci sono problemi con questo approccio, anche se:

  • perderai le modifiche, se il programma si interrompe in modo incontrollato (es.se si è ucciso)
  • perderai le modifiche, se ci sono errori (autorizzazione negata, disco pieno, errori di rete)

Quindi potrebbe essere meglio per salvare le impostazioni immediatamente (magari in un thread aggiuntivo, per evitare tempi di attesa).

Sono la creazione di un'autonoma applicazione grafica (es.Swing)?

Se è così, si dovrebbe considerare come si sta fornendo opzioni per utenti come uscire dall'applicazione.Cioè, se ci sta per essere un menu File, mi aspetto che ci sarà un "Uscita" voce di menu.Inoltre, se l'utente chiude l'ultima finestra in app, mi aspetterei anche che per uscire dall'applicazione.In entrambi i casi, si dovrebbe chiamare il codice che gestisce il salvataggio delle preferenze dell'utente.

Utilizzando Il Runtime.getRuntime().addShutdownHook() è sicuramente un modo per farlo, ma se si sta scrivendo applicazioni Swing, ti consiglio vivamente di dare un'occhiata a JSR 296 (Swing Application Framework)

Ecco un buon articolo su nozioni di base: http://java.sun.com/developer/technicalArticles/javase/swingappfr/.

JSR implementazione di riferimento fornisce il tipo di caratteristiche che stai cercando a un livello di astrazione superiore rispetto all'aggiunta di ganci di arresto.

Qui è l'implementazione di riferimento: https://appframework.dev.java.net/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top