我有关闭挂钩,我附加到运行时
Runtime.getRuntime().addShutdownHook(new ShutDownHook(false));
这是一个shutDownHook类
public class ShutDownHook extends Thread {
private final boolean interupt;
public ShutDownHook(boolean interupt) {
this.interupt = interupt;
}
@Override
public void run() {
if (interupt) {
return;
}
System.out.println("ShutdownHook Execution");
DbUtil.insertIntoDailyStats(MainDataModel.downloadedBytesSessionProperty().getValue());
MainDataModel.getInstance().loginProfile.getPreferences().putLong(
Info.PreferenceData.PREF_USER_DAILY_STAT_DOWNBYTE, MainDataModel.downloadedBytesTodayProperty().get());
System.out.println("ShutdownHook Execution finished");
}
}
我使用方法
从系统托盘图标关闭我的应用程序 exit.addActionListener((ActionEvent e) -> {
try {
GlobalScreen.unregisterNativeHook();
System.exit(0);
} catch (NativeHookException ex) {
ex.printStackTrace();
}
});
应用程序关闭芽钩执行没有通过,任何想法为什么?
我知道有些情况下ShutdownHook没有执行萌芽我用System.exit(0);
关闭我的应用程序,这一切都安然无恙吗?
答案 0 :(得分:0)
好吧我发现一个问题我有多个ShutDownHooks挂钩因为某些原因这个没有执行,我删除了所有旁边一个现在一切正常。可能太多的负载。
完美无瑕地工作,如果你使用netbeans也不要使用RED TERMINATION BUTTON, - 只是一个注释。这样你永远不会执行SDH。