【发布时间】:2013-02-10 16:14:53
【问题描述】:
我们有一个 SWT 应用程序,当它仍在运行时会导致挂起,并且用户在 OS X 上触发系统关闭。从应用程序菜单关闭应用程序可以正常工作。
我尝试将SWT.Close 监听器注册到Display 实例:
display.addListener(SWT.Close, new Listener() {
@Override
public void handleEvent(Event event) {
if (!handleExitRequest()) {
event.doit = false;
event.type = SWT.None;
}
}
});
这神奇地解决了挂起,但不幸的是,退出时调用它并不可靠。 :(
【问题讨论】:
-
您是否尝试使用Shutdown Hook 清理和关闭 SWT 内容?
-
没有。 IIRC,当虚拟机退出时会触发关闭挂钩,但我的虚拟机只是挂起。
-
你能用几句话解释一下“魔法”吗?此行检查什么:
if (!handleExitRequest())?我想看看完整的方法。 -
handleExitRequest是我们代码中的一个方法,如果应用程序可以直接退出(例如,没有未保存的更改),它将返回true。如果它现在不能退出,它返回false。我认为这很明显。 -
您的问题解决了吗?如果是,如何?如果您能发布答案,那就太好了。通知我们有关 Mac 上的 SWT 问题...