我正在尝试在应用程序关闭之前清理应用程序中的资源,继我之前的问题(Detecting When A Java Application Closes)之后,我已经实现了以下代码,它完美地执行了清理操作。
//Intercept when the application closes
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
//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);
}
});
虽然 System.exit(0); 调用被理解和处理,应用程序继续运行,只是没有可见的 GUI。我曾考虑将 System.exit(0) 调用放在 Thread 之外,但它超出了范围,没有任何其他线程或流在运行。
在连接到 ShutDown 事件以确保一切都关闭时,我需要采取额外的步骤吗?
感谢您的宝贵时间,我非常感谢。