16

ユーザーがプログラムを終了するたびに、プログラムの設定を保存したいと思います。したがって、ユーザーがプログラムを終了したときに関数を呼び出す方法が必要です。それ、どうやったら出来るの?

私はJava1.5を使用しています。

4

4 に答える 4

42

次の手順を実行して、アプリケーションにシャットダウンフックを追加できます。

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

これは基本的に、プログラム全体の周りにtry {} finally {}ブロックを設定することと同じであり、基本的に、finallyブロックの内容を含みます。

ただし、注意点に注意してください。

于 2008-09-15T15:03:27.020 に答える
11

シャットダウンフックaddShutdownHook(java.lang.Thread)を追加することは、おそらくあなたが探しているものです。ただし、このアプローチには問題があります。

  • プログラムが制御されていない方法で中止された場合 (つまり、強制終了された場合) は、変更が失われます。
  • エラーが発生した場合 (アクセス許可が拒否された、ディスクがいっぱい、ネットワーク エラー)、変更が失われます。

そのため、設定をすぐに保存する方がよい場合があります (待ち時間を避けるために、おそらく追加のスレッドで)。

于 2008-09-15T15:22:04.180 に答える
0

Runtime.getRuntime()。addShutdownHook()を使用することは確かにこれを行う方法ですが、Swingアプリケーションを作成している場合は、JSR 296(Swingアプリケーションフレームワーク)を確認することを強くお勧めします。

基本に関する優れた記事は次のとおりです:http: //java.sun.com/developer/technicalArticles/javase/swingappfr/

JSRリファレンス実装は、シャットダウンフックを追加するよりも高いレベルの抽象化で探している種類の機能を提供します。

リファレンス実装は次のとおりです: https ://appframework.dev.java.net/

于 2008-09-16T03:58:19.637 に答える
0

スタンドアロンの GUI アプリ (つまり Swing) を作成していますか?

その場合、アプリケーションを終了する方法をユーザーにどのように提供するかを検討する必要があります。つまり、File メニューがあれば、"Exit" メニュー項目があると思います。また、ユーザーがアプリの最後のウィンドウを閉じると、アプリケーションも終了することが期待されます。どちらの場合も、ユーザー設定の保存を処理するコードを呼び出す必要があります。

于 2008-09-15T17:08:42.240 に答える