在java中为系统托盘创建单个实例

我正在使用java创建的桌面应用程序.我们正在为应用程序的Windows版本(用于在Windows O.S.上运行)工作.当我们运行我们的应用程序时,它会使用systemtray as在桌面上创建一个托盘图标

SystemTray tray = SystemTray.getSystemTray();

我正在创建系统托盘的单个实例,我在应用程序的主类中创建.

我正在为我的应用程序创建exe.我的问题是当我运行我的应用程序的exe文件时,它每次都会创建托盘图标.

我想在我的应用程序中只在桌面上显示一个托盘图标并作为服务运行.只有在卸载应用程序时才会删除此图标.它应该在后台运行作为服务.

我没有任何方式可以帮助我将我的应用程序作为服务运行,并且应该只有一个实例在后台运行.

我想通过创建托盘图标作为服务来运行我的应用程序,并且应该存在单个实例.请指导我这个问题.

感谢您提前提出的所有宝贵建议.

最佳答案
正如Mudassir所说,你应该在启动程序时添加一个检查,试图找到另一个正在运行的应用程序实例.这可以通过在启动时创建特定文件并在关闭删除它来完成.如果启动应用程序时文件已存在,则表示正在运行另一个实例.
您也可以使用进程间通信,但它比简单文件更难.

对于“服务”部分,您可以在启动时隐藏主窗口,因此您的应用程序将像Windows服务一样运行.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...