質問
ユーザーがプログラムを終了するたびにプログラムの設定を保存したいと考えています。したがって、ユーザーがプログラムを終了したときに関数を呼び出す方法が必要です。それ、どうやったら出来るの?
Java1.5を使用しています。
解決
次の手順を実行して、アプリケーションにシャットダウン フックを追加できます。
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
// what you want to do
}
}));
これは基本的に、プログラム全体を try {}finally{} ブロックで囲むのと同じで、基本的にはfinally ブロックの内容を含みます。
ご注意ください。 注意事項 けれど!
他のヒント
シャットダウンフックの追加 addShutdownHook(java.lang.Thread) おそらくあなたが探しているものです。ただし、このアプローチには問題があります。
- プログラムが制御されていない方法で異常終了した場合(つまり、殺された場合)
- エラー(アクセス許可の拒否、ディスクがいっぱい、ネットワーク エラー)がある場合、変更は失われます。
したがって、設定をすぐに保存する方が良いかもしれません (待ち時間を避けるために、場合によっては追加のスレッドに)。
スタンドアロンの GUI アプリを作成していますか (つまり、スイング)?
その場合は、アプリケーションを終了する方法のオプションをユーザーにどのように提供するかを検討する必要があります。つまり、[ファイル] メニューがある場合は、[終了] メニュー項目があると予想されます。また、ユーザーがアプリの最後のウィンドウを閉じた場合、アプリケーションも終了すると予想されます。どちらの場合も、ユーザーの設定の保存を処理するコードを呼び出す必要があります。
Runtime.getRuntime().addShutdownHook() を使用することは確かにこれを行う方法です。ただし、Swing アプリケーションを作成している場合は、JSR 296 (Swing Application Framework) を参照することを強くお勧めします。
基本に関する優れた記事は次のとおりです。 http://java.sun.com/developer/technicalArticles/javase/swingappfr/.
JSR リファレンス実装は、シャットダウン フックを追加するよりも高い抽象レベルで、探している種類の機能を提供します。
リファレンス実装は次のとおりです。 https://appframework.dev.java.net/