2011-04-17 57 views
5

我正在使用Swing编写一个小型Java应用程序。 该应用程序还具有网络组件。在退出Java应用程序之前进行清理

我想在退出之前运行一些代码(关闭通道,键等)。有没有办法做到这一点,没有在我的界面添加一个退出按钮,在其中做我的清理,然后做System.exit ()?

回答

5

你应该可以在windowClosing()中做你想做的,如here所示。

8

您可以使用Runtime#addShutdownHook函数添加一个函数以在JVM关闭时运行。

+0

IMO这是最好的答案......如果您的应用程序在窗口关闭时设置为EXIT而不是DISPOSE,则不会调用windowClosing()。不保证在所有情况下都被调用,因此不能保证您的资源得到清理。 – teh1 2012-06-24 01:58:03

1

'关闭键':SelectionKeys?你不需要对这些做任何事情。关闭频道将自动取消所有SelectionKeys。除非你有待处理的数据,否则你需要刷新,你也不需要关闭频道,操作系统会为你做。

+0

我想我有一些悬而未决的数据或者什么,因为我会在应用程序的多次运行中出现一些奇怪的行为。现在我做了适当的清理,似乎恢复了正常。 – adivasile 2011-04-18 08:14:41

相关问题