Java 在应用程序关闭时运行代码
这又是一个非常常见的问题,而且似乎E4中没有真正的支持(但如果我没记错的话,它在E3中也不起作用) 我想在应用程序关闭时关闭数据库连接。或者更一般地说:我想在出口处进行任何形式的清理 因此,通常的API是:Java 在应用程序关闭时运行代码,java,eclipse-plugin,Java,Eclipse Plugin,这又是一个非常常见的问题,而且似乎E4中没有真正的支持(但如果我没记错的话,它在E3中也不起作用) 我想在应用程序关闭时关闭数据库连接。或者更一般地说:我想在出口处进行任何形式的清理 因此,通常的API是: public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { public ApplicationWorkbenchWindowAdvisor(final IWorkbenchWind
public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
public ApplicationWorkbenchWindowAdvisor(final IWorkbenchWindowConfigurer configurer) {
super(configurer);
}
@Override
public boolean preWindowShellClose() {
if (PlatformUI.getWorkbench().getWorkbenchWindowCount() <= 1) {
// the last window is about to close
Datababase.close();
}
return super.preWindowShellClose();
}
}
问题:对于RCP应用程序,这个钩子被称为way,way,way-too-late,例如,所有插件都已经关闭了
我觉得一定有一个简单的方法,我只是还没有找到。如果这很重要的话,我们正在使用较小的邪恶Eclipse(又名E3兼容性)
如何在应用程序关闭时运行代码?使用
IWorkbench::addWindowListener
或IWorkbench::addWorkbenchListener
在工作台窗口关闭或工作台关闭时获得通知
您也可以考虑从包的<代码>停止/代码>方法运行清理代码。
您是否尝试了<代码> iWorkStay::AddiWoDOWListNe<代码>或<代码> iWorkStay::AddiWorkBistListor <代码>?如果这些方法不可靠,您可以考虑从包的<代码>停止>代码>中运行清理代码。对不起,我只能在这里猜测…@Rüdigerrmann不,我没有试过这些。两者似乎都起作用。所以我想这就是答案。Runtime.getRuntime().addShutdownHook(new Thread(() -> {
Datababase.close();
}));