簡體   English   中英

程序在java中退出時調用函數

[英]Calling function when program exits in java

我想在每次用戶退出程序時保存程序設置。 所以當用戶退出程序時我需要一種方法來調用函數。 我怎么做?

我使用的是Java 1.5。

您可以通過執行以下操作向應用程序添加關閉掛鈎:

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

這基本上相當於在整個程序中使用try {} finally {}塊,並且基本上包含了finally塊中的內容。

請注意警告

添加一個關閉鈎子addShutdownHook(java.lang.Thread)可能就是你要找的東西。 但是,這種方法存在問題:

  • 如果程序以不受控制的方式中止(即如果它被殺死),你將失去更改
  • 如果有錯誤(權限被拒絕,磁盤已滿,網絡錯誤),您將丟失更改

因此,最好立即保存設置(可能在額外的線程中,以避免等待時間)。

你在創建一個獨立的GUI應用程序(即Swing)嗎?

如果是這樣,您應該考慮如何為用戶提供如何退出應用程序的選項。 也就是說,如果有一個文件菜單,我希望會有一個“退出”菜單項。 此外,如果用戶關閉應用程序中的最后一個窗口,我也希望它退出應用程序。 在這兩種情況下,它都應該調用處理保存用戶首選項的代碼。

使用Runtime.getRuntime()。addShutdownHook()肯定是一種方法 - 但是如果你正在編寫Swing應用程序,我強烈建議你看一下JSR 296(Swing應用程序框架)

這是一篇關於基礎知識的好文章: http//java.sun.com/developer/technicalArticles/javase/swingappfr/

與添加關閉掛鈎相比,JSR參考實現提供了更高抽象級別所需的功能。

以下是參考實現: https//appframework.dev.java.net/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM