关于事件:在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)?

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


推荐阅读

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    linux设置根命令过短?

    linux设置根命令过短?,系统,工作,软件,地址,命令,代码,情况,管理,基础,位置,3

    linux命令创建用户组?

    linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    查看linux用户命令行?

    查看linux用户命令行?,信息,系统,时间,名称,密码,用户,命令,地址,状态,设备,L

    linux所有用户命令行?

    linux所有用户命令行?,系统,信息,地址,工作,密码,命令,用户,时间,电脑,管理,L

    linux用户下的命令是?

    linux用户下的命令是?,系统,工作,管理,地址,命令,密码,基础,信息,目录,新增,L

    linux查看函数命令?

    linux查看函数命令?,系统,信息,名称,命令,位置,情况,公用,名字,标准,资料,lin

    linux关机用户命令?

    linux关机用户命令?,系统,工作,信息,状态,管理,命令,基础,目录,用户,功能,lin

    linux看用户信息命令?

    linux看用户信息命令?,系统,密码,信息,状态,软件,情况,命令,用户,网络,时间,l

    linux命令行设置字体?

    linux命令行设置字体?,系统,工具,终端,软件,电脑,数字,位置,等级,字体,命令,L

    linux下删除用户命令?

    linux下删除用户命令?,系统,代码,邮箱,用户组,命令,用户,名称,管理,电脑,账

    用户id的linux命令?

    用户id的linux命令?,系统,密码,信息,联系方式,地址,位置,用户,命令,用户名,

    linux命令快捷设置?

    linux命令快捷设置?,第一,系统,名称,终端,发行,首页,命令,快捷键,窗口,桌面,l

    linux命令设置扩展屏?

    linux命令设置扩展屏?,工具,系统,电脑,技术,软件,装备,情况,工作,命令,显示

    linux删除用户组命令?

    linux删除用户组命令?,管理,系统,密码,电脑,名称,用户,用户组,名字,信息,工

    linux命令设置自启动?

    linux命令设置自启动?,服务,系统,信息,数字,检测,工具,状态,密码,跨行,脚本,l

    linux设置命令在哪里?

    linux设置命令在哪里?,系统,地址,代码,管理,密码,命令,位置,名字,服务,分行,l

    linux退出程序命令?

    linux退出程序命令?,档案,管理,系统,命令,编辑,进程,模式,文件,程序,指令,lin

    linux下用户权限命令?

    linux下用户权限命令?,管理,系统,密码,地址,权限,时间,基础,信息,基本知识,