我遇到一个奇怪的错误,ScheduledService
在成功完成任何迭代后都不会触发ChangeListener
。
这是如何复制的:
final ScheduledService<Void> service = new ScheduledService<Void>()
{
@Override
protected Task<Void> createTask()
{
// TODO Auto-generated method stub
return new Task<Void>()
{
@Override
protected Void call() throws Exception
{
// TODO Auto-generated method stub
return null;
}
};
}
};
service.setOnSucceeded(event ->
{
System.out.println("onSucceeded() triggered!");
});
service.stateProperty().addListener((obs, o, n) ->
{
System.out.println(n);
});
service.setPeriod(Duration.seconds(2));
service.start();
输出:
READY
SCHEDULED
SCHEDULED
RUNNING
onSucceeded() triggered!
READY
SCHEDULED
SCHEDULED
RUNNING
onSucceeded() triggered!
READY
SCHEDULED
SCHEDULED
这很奇怪,因为触发了onSucceeded()
事件,但ChangeListener
没有得到相应的值更改。当然,我绝对可以使用setOnSucceeded()
来完成我的所有工作,但它仍然很奇怪,因为我已处理ChangeListener
中SUCCEEDED
以外的所有状态。
这是否算作API中的错误?