java windows 上的后台应用程序
java background application on windows
我想在自己的 JVM 中有一个主应用程序和一个后台应用程序。
启动主程序时,它必须检查背景是否为 运行,如果不是,则启动它。
我将有多个电源 运行 但我只想要一个后台应用程序。
关闭所有电源后,后台保持运行就可以了。
第一次做后台应用,不懂:
- 如何启动分离的应用程序。 (不会一起终止)
- 如何检查其他应用程序是否 运行
- 两个应用程序如何在它们之间进行通信(我应该使用套接字)
我还处于设计阶段,欢迎任何意见或建议,即使是相关的。
如果您能提供示例代码或 link.
,我将不胜感激
据我了解,您正在寻找 SingleInstance
应用程序,您不希望终止它以执行某些后台进程?
我不明白第三个问题,但我会直接回答第一和第二个问题。
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
checkIfRunning(); //Check first if the Application is aready running.
Parent root = FXMLLoader.load(getClass().getResource("fxml/main.fxml"));
primaryStage.setTitle("Hello World");
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
Platform.setImplicitExit(false); //Prevent the Application from Terminating when it's close
}
public static void main(String[] args) {
launch(args);
}
/**The function for checking if the application is already running start here**/
private static final int PORT = 9999;
private static ServerSocket socket;
private static void checkIfRunning() {
try {
//Bind to localhost adapter with a zero connection queue
socket = new ServerSocket(PORT,0, InetAddress.getByAddress(new byte[] {127,0,0,1}));
}
catch (BindException e) {
System.err.println("Application already running.");
System.exit(1);
}
catch (IOException e) {
System.err.println("Unexpected error when checking if application is already running.");
e.printStackTrace();
System.exit(2);
}
}
}
尝试一下,您会发现当您关闭应用程序时它仍然会 运行 并且您将无法启动多个应用程序。
我想在自己的 JVM 中有一个主应用程序和一个后台应用程序。
启动主程序时,它必须检查背景是否为 运行,如果不是,则启动它。
我将有多个电源 运行 但我只想要一个后台应用程序。
关闭所有电源后,后台保持运行就可以了。
第一次做后台应用,不懂:
- 如何启动分离的应用程序。 (不会一起终止)
- 如何检查其他应用程序是否 运行
- 两个应用程序如何在它们之间进行通信(我应该使用套接字)
我还处于设计阶段,欢迎任何意见或建议,即使是相关的。
如果您能提供示例代码或 link.
据我了解,您正在寻找 SingleInstance
应用程序,您不希望终止它以执行某些后台进程?
我不明白第三个问题,但我会直接回答第一和第二个问题。
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
checkIfRunning(); //Check first if the Application is aready running.
Parent root = FXMLLoader.load(getClass().getResource("fxml/main.fxml"));
primaryStage.setTitle("Hello World");
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
Platform.setImplicitExit(false); //Prevent the Application from Terminating when it's close
}
public static void main(String[] args) {
launch(args);
}
/**The function for checking if the application is already running start here**/
private static final int PORT = 9999;
private static ServerSocket socket;
private static void checkIfRunning() {
try {
//Bind to localhost adapter with a zero connection queue
socket = new ServerSocket(PORT,0, InetAddress.getByAddress(new byte[] {127,0,0,1}));
}
catch (BindException e) {
System.err.println("Application already running.");
System.exit(1);
}
catch (IOException e) {
System.err.println("Unexpected error when checking if application is already running.");
e.printStackTrace();
System.exit(2);
}
}
}
尝试一下,您会发现当您关闭应用程序时它仍然会 运行 并且您将无法启动多个应用程序。