我正在用 Java 制作一个应用程序,我想知道是否有任何方法可以知道当我从快捷方式运行此应用程序时,它是否检测到它已经在运行并为我打开该进程,就像 Spotify 桌面应用程序一样。
我找到了一种“自制”方法来知道它是否已经在运行;我每隔 x 秒在记事本中保存当前时间Java.util.Calendar.getTimeInMillis()
,如果尝试从直接访问打开应用程序时保存在 txt 中的时间小于 x,则表示它正在运行并且不会打开另一个副本。有了这个,我确保它只能打开一次,但我希望它不仅能够做到这一点,而且还能找到那个进程并将其发送到前面。
没有特定的方法,但挥杆中的一个常见解决方法
frame.setAlwaysOnTop(true);
是应用,然后frame.setAlwaysOnTop(false);
立即将其带到前台。这与检测应用程序是否打开的方法一起应用,将为您提供预期的结果。另一种方法是使用
ManagementFactory
只允许应用程序的一个实例的方法,如此处 所述。另一个小事:
方法我看的很好,就是:
,不必每秒写一次
X
,只在第一次开始时写,这样你就可以释放资源。您好,一个简单的解决方案是通过 ServerSocket。首先是创建服务器套接字,为其分配一个端口,并捕获异常,在这里您可以处理异常,使其适应您的建议(如果发生此异常,您可以终止程序或将其抛到前面(最大化)因为另一个已经在那里运行)。但是你必须很好地选择端口,这样它就不会被另一个程序使用。
顶部显示: