16

我想在每次用户退出程序时保存程序设置。所以我需要一种在用户退出程序时调用函数的方法。我怎么做?

我正在使用 Java 1.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

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

如果是这样,您应该考虑如何为用户提供退出应用程序的选项。也就是说,如果有一个文件菜单,我希望会有一个“退出”菜单项。此外,如果用户关闭应用程序中的最后一个窗口,我也希望它退出应用程序。在这两种情况下,它都应该调用处理保存用户首选项的代码。

于 2008-09-15T17:08:42.240 回答
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 回答