У меня есть хук Shutdown, который я подключаю к среде выполнения.
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);
, что должно быть в целости и сохранности?