我正在尝试检测 Java 应用程序何时关闭,以便我可以执行释放资源的方法,我在 C# 中完成了如下操作:
//Intercept when the application closes
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//Reclaim resources from MIDI usage
if (MIDIControl.CleanUp())
{
Logger.Add("Closed resources successfully on Form Close \n");
}
else
{
Logger.Add("Failed to close all resources on Form Close.");
}
}
我已经尝试在 Java 版本中执行相同的技术,但它似乎不起作用,我已经尝试调试并且它不会在方法名称上的断点处暂停:
//Intercept when the application closes
public void windowClosing(WindowEvent we)
{
//Reclaim resources from MIDI usage
if(_midiInstance.CleanUp())
{
Logger.Add("Closed resources successfully on ShutDown");
}
else
{
Logger.Add("Failed to close all resources on ShutDown");
}
System.exit(0);
}
我是不是在等待错误的事件?我将如何以与 C# 版本相同的方式执行适当的方法。
感谢您的宝贵时间。
最佳答案
您是否通过 addWindowListener()
注册了包含 windowClosing()
方法的类?
除此之外,使用窗口来确定应用程序状态并不是一种好的方式。 Java 明确允许您 Hook 关闭过程:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// place your code here
}
});
关于java - 检测 Java 应用程序何时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731893/