1
以下是我的任务初始化JavaFX的后台任务没有运行不止一次
final Task<Void> vt=voiceTask();
Button btn = new Button();
btn.setText("Say");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
new Thread(vt).start();
}
});
这里是任务编码
public Task<Void> voiceTask() {
return new Task<Void>(){
@Override
protected Void call() throws Exception {
HelloWorld hw=new HelloWorld();// HelloWorld is simple .java class getting voice through sphinx
updateMessage(hw.Hello());
return null;
}
};
}
现在就点击BTN按钮的第一次,任务功能正常,但在点击后续时间任务不会被调用。
我想要在每次点击时调用任务。 请指教我如何修改我的代码这样做...
实际上,当任务开始时,我正在使用麦克风事件,现在按第二次按钮创建一个新任务,但麦克风只被旧任务占用。我想取消()旧线程,但这也没有解决问题。你能否建议我可以通过哪种方式来减轻旧线程占用的资源,使其完全终止,以便在再次按下按钮时,新任务可以使用这些资源。 –
最简单的事情就是在任务运行时禁用按钮。我更新了代码来执行此操作。如果任务永远不存在,那么HelloWorld.hello()方法就是一个问题,这实际上是关于您使用的语音库的问题,而不是JavaFX问题。 –