這是一個「最佳實踐」類型的問題。 AFAIK有兩種方法(可能還有更多的..)需要事先到JVM停止執行任務時:如何確保在關閉Java桌面應用程序後執行任務?
- 添加
WindowListener
到容器和覆蓋windowClosing
事件 - 添加一個關閉掛鉤(即
Runtime.addShutdownHook
)
對於Java桌面應用程序,哪種方法是「首選」方式?有沒有「首選」的方式?
這是一個「最佳實踐」類型的問題。 AFAIK有兩種方法(可能還有更多的..)需要事先到JVM停止執行任務時:如何確保在關閉Java桌面應用程序後執行任務?
WindowListener
到容器和覆蓋windowClosing
事件Runtime.addShutdownHook
)對於Java桌面應用程序,哪種方法是「首選」方式?有沒有「首選」的方式?
不是最好的做法,不可取的方式,只關閉當前JVM實例,非常簡單,
1)Top-LevelContainer#setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
2)添加WindowListener
WindowListener exitListener = new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int confirm = JOptionPane.showOptionDialog(null,
"Are You Sure to Close Application?", "Exit Confirmation",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
null, null, null);
if (confirm == JOptionPane.YES_OPTION) {
Top-LevelContainer#setVisible(false);
// clean-up everything
// on error display JOptionPane with error mgs but from
// another JVM instance, e.g.jar file, see add 3.)
System.exit(1); //in some cases not works System.exit(0);
}
}
3)here是休息如何從另一個顯示錯誤消息,新的JVM實例
我的問題你真的想知道什麼,v for v + 1怪異的問題 – mKorbel