关于事件:在Java中退出程序时调用函数

关于事件:在Java中退出程序时调用函数

Calling function when program exits in java

我想在用户每次退出程序时保存程序设置。因此,我需要一种在用户退出程序时调用函数的方法。我该怎么办?

我正在使用Java 1.5。


您可以通过执行以下操作向应用程序添加一个关闭钩子:

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

这基本上等同于在整个程序中使用try {} finally {}块,并且基本上包含了finally块中的内容。

请注意以下几点!


添加关闭钩子addShutdownHook(java.lang.Thread)可能正是您想要的。但是,该方法存在一些问题:

  • 如果程序以不受控制的方式中止(即被杀死),您将丢失更改。
  • 如果出现错误(权限被拒绝,磁盘已满,网络错误),您将丢失更改。

因此最好立即保存设置(可能在额外的线程中,以避免等待时间)。


使用Runtime.getRuntime()。addShutdownHook()当然是实现此目的的一种方法-但是,如果您正在编写Swing应用程序,我强烈建议您看一下JSR 296(Swing应用程序框架)

这是一篇有关基础知识的好文章:http://java.sun.com/developer/technicalArticles/javase/swingappfr/。

与添加关闭挂钩相比,JSR参考实现提供了您正在更高级别的抽象中寻找的功能。

这是参考实现:https://appframework.dev.java.net/


您是否正在创建独立的GUI应用程序(即Swing)?

如果是这样,则应考虑如何为用户提供选项以及如何退出应用程序。
即,如果要有"文件"菜单,我希望会有"退出"菜单项。
另外,如果用户关闭应用程序中的最后一个窗口,我也希望它退出应用程序。
在这两种情况下,它都应调用用于保存用户首选项的代码。


推荐阅读