मेरे पास एक ऐसा एप्लिकेशन है जो उपयोगकर्ता क्रियाओं पर एक संदेश को छपने के लिए टाइमर शुरू करता है। जेडीके प्रोफाइलर में ऐसा लगता है कि जीसी (मुझे लगता है) द्वारा निष्पादन के बाद अन्य सभी धागे हटा दिए जा रहे हैं लेकिन बनाए गए टाइमर को हटाया नहीं जा रहा है। वहां क्या हो रहा है?जावा - निष्पादन के बाद टाइमर को हटाया नहीं जा रहा है
मेरी टाइमर:
/**
* @param owner
* @param added
*/
public static void splashParentWithAnimation(AnchorPane owner, Parent added,double posX,double posY) {
// addParentWithAnimation(owner, added);
owner.getChildren().add(added);
AnchorPane.setLeftAnchor(added, posX);
AnchorPane.setTopAnchor(added, posY);
FadeTransition ft1 = new FadeTransition(Duration.millis(300), added);
ft1.setFromValue(0.0);
ft1.setToValue(1.0);
ft1.play();
Timer messagePrinter = new Timer();
messagePrinter.schedule(new TimerTask() {
@Override
public void run() {
Platform.runLater(() -> {
if (!owner.getChildren().contains(added))
return;
FadeTransition ft1 = new FadeTransition(Duration.millis(300), added);
ft1.setFromValue(1.0);
ft1.setToValue(0.0);
ft1.play();
ft1.setOnFinished((e) -> {
if (owner.getChildren().contains(added))
owner.getChildren().remove(added);
});
});
}
}, 1000);
}
यह क्योंकि मैं एक स्थिर विधि का उपयोग कर रहा है या मैं इसे अपने आप को नष्ट करना चाहिए है?
मुझे इसके बारे में निश्चित नहीं है लेकिन जानना अच्छा है, वैसे भी, मैंने जावाएफ़एक्स की टाइमलाइन का उपयोग किया जिसके बजाय (कम से कम मेरे लिए) बेहतर है –