Frage

Ich möchte die Programme Einstellungen der Benutzer jedes Mal speichern, das Programm beendet wird. Also brauche ich einen Weg, um eine Funktion aufzurufen, wenn der Benutzer das Programm beendet wird. Wie kann ich das tun?

Ich bin mit Java 1.5.

War es hilfreich?

Lösung

Sie können einen Shutdown-Hook zu Ihrer Anwendung hinzufügen, indem Sie folgendermaßen vorgehen:

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

Dies ist im Grunde gleichwertig einen Versuch mit {} finally {} um das gesamte Programm zu blockieren, und umfasst im Wesentlichen, was in der finally-Block.

Bitte beachten Sie die Einsprüche aber!

Andere Tipps

einen Shutdown Haken Hinzufügen addShutdownHook (java.lang.Thread) ist wahrscheinlich das, was Sie suchen. Es gibt Probleme mit diesem Ansatz, aber:

  • sehen Sie die Änderungen verlieren, wenn das Programm in unkontrollierter Weise abgebrochen (das heißt, wenn er getötet wird)
  • sehen Sie die Änderungen verlieren, wenn es Fehler (die Erlaubnis verweigert, Festplatte voll, Netzwerkfehler)

So könnte es besser sein, die Einstellungen sofort zu speichern (möglicherweise in einem extra Thread, Wartezeiten zu vermeiden).

Sie sind eine Stand-alone-GUI-Anwendung zu schaffen (das heißt Swing)?

Wenn ja, sollten Sie überlegen, wie Sie Optionen für Ihre Benutzer, wie bieten die Anwendung zu beenden. Das heißt, wenn es geht um ein Menü Datei sein, würde ich erwarten, dass es ein „Exit“ Menüpunkt sein. Auch, wenn der Benutzer das letzte Fenster in der App schließt, würde ich auch erwarten, dass es um die Anwendung zu beenden. In beiden Fällen sollte es Code aufrufen, die Einstellungen des Benutzers Griffe zu speichern.

Mit Runtime.getRuntime () addShutdownHook () ist sicherlich eine Möglichkeit, dies zu tun -. Aber wenn Sie Swing-Anwendungen schreiben, empfehle ich dringend, dass Sie einen Blick auf JSR 296 (Swing Application Framework) nehmen

Hier ist ein guter Artikel über die Grundlagen: http: //java.sun. com / Entwickler / technicalArticles / JavaSE / swingappfr / .

Die JSR Referenzimplementierung liefert die Art von Funktionen, die Sie auf einer höheren Abstraktionsebene suchen als Shutdown-Hooks hinzugefügt wird.

Hier ist die Referenzimplementierung: https://appframework.dev.java.net/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top