何らかの理由で、アプリケーションのウィンドウを閉じて終了してもアプリケーションが処理を続行するプロセスがあります。私が説明していないものはありますか?私のアプリは定期的にシステムトレイ通知を生成しますが、これらは終了後も継続します。これを停止する唯一の方法は、タスクマネージャでjava.exeプロセスを見つけることです。私が見落としているものはありますか?終了時にJavaFXアプリケーションのタスクマネージャプロセスが終了しない理由
public class TrayNotification {
public static void execute(String firstName, String incidentNumber, String requestId, TableView tabTable) throws AWTException, MalformedURLException {
if (SystemTray.isSupported()) {
TrayNotification trayNotification = new TrayNotification();
trayNotification.displayTray(firstName, incidentNumber, requestId, tabTable);
}
}
private void displayTray(String firstName, String incidentNumber, String requestId, TableView tabTable) throws AWTException, MalformedURLException {
// Obtain a single instance of SystemTray
SystemTray tray = SystemTray.getSystemTray();
// Set TrayIcon values
Image image = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/images/tray-icon.png"));
final TrayIcon trayIcon = new TrayIcon(image, "Remedy React Notification");
trayIcon.setImageAutoSize(true);
trayIcon.setToolTip(incidentNumber);
// Add TrayIcon to SystemTray instance if possible
try {
tray.add(trayIcon);
} catch (AWTException e) {
// System.out.println("Notification could not be added.");
}
trayIcon.addActionListener(e -> {
Parent root = null;
try {
root = FXMLLoader.load(getClass().getResource("/fxml/scene.fxml"));
root.requestLayout();
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println("Test");
});
// Display TrayIcon
trayIcon.displayMessage("Hey, " + firstName, "You are now tracking " + incidentNumber + " !", TrayIcon.MessageType.INFO);
}
}
ほとんどの原因は、非デーモンスレッドの作成です。明示的にまたはエグゼキュータを介して、プログラム内に新しいスレッドを作成していますか? [MCVE]を提供することを検討してください。 – Itai
[こちら](https://stackoverflow.com/q/2213340/230513)[こちら](http://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html) #jls-12.8)。 – trashgod