【问题标题】:java when app is running and GUI is hidden and then start same app again that notice this and just tell already running app to show GUI [closed]java当应用程序正在运行并且GUI被隐藏然后再次启动同一个应用程序注意到这一点并告诉已经运行的应用程序显示GUI [关闭]
【发布时间】:2011-11-22 20:13:11
【问题描述】:

我只想在已经启动的应用程序上显示 GUI。我有 file.lock 到位的单实例样式应用程序。我想要一些轻量级的东西,而不是 IPC 或 javaspace。

正在考虑使用 Server.accept() 来 ping 已启动的应用程序并使其执行 setVisible(true) 但如果端口正在使用中,这可能会导致麻烦。如果第一个端口被占用,可以设置一个端口号表/算法来遵循,但这又是一个坏主意。

你怎么看,有什么选择?

【问题讨论】:

  • 你的意思是SingleInstance stackoverflow.com/questions/8223527/…
  • 我已经设置了 SingleInstance,但我的应用程序有一个托盘图标,有时应用程序 GUI 是隐藏的。如果用户启动应用程序的另一个实例,该实例必须将第一个实例带入 setVisble(true) 和提交 exit(0)
  • 感谢您的链接,但如上所述,我已经设置了单实例。

标签: java ipc


【解决方案1】:

监听端口可能是最好的方法——至少是最可靠的方法。另一种选择是写出一个文件并查找它,但是当您的计算机崩溃并且文件未被删除时会导致问题。

如果您无法绑定到端口,则仅此一项可能表明服务器正在运行。

如果您希望能够恢复,请发送消息并期望端口上返回特定响应。如果您无法绑定到端口并且没有从端口获得响应,那么可能不是您,因此请使用“此应用是否已在运行”对话框提示用户。

【讨论】:

  • 是的“这个应用程序是否已经在运行”对话框。如果我在应用程序列表栏中有 GUI,可能是一个解决方案,但唯一可见的部分是托盘图标。所以我必须想办法让 setVisible(true)
  • 当然可以发送一个应用程序正在运行的消息框并要求用户单击托盘图标。是的,这是一种公认​​的行为。问题已解决,我想感谢您的提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2016-08-16
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多