【发布时间】:2018-10-04 11:43:42
【问题描述】:
我需要等到给定的布尔值为真。该布尔值由侦听器更新。所有代码都在 EDT 内,因此不适用以下内容:
while (!myBoolean) {
Util.sleep(100);
}
我怎样才能停止 EDT 内的执行流程(以正确的方式),直到给定的布尔值变为真?
【问题讨论】:
标签: codenameone
我需要等到给定的布尔值为真。该布尔值由侦听器更新。所有代码都在 EDT 内,因此不适用以下内容:
while (!myBoolean) {
Util.sleep(100);
}
我怎样才能停止 EDT 内的执行流程(以正确的方式),直到给定的布尔值变为真?
【问题讨论】:
标签: codenameone
简单的答案是:
invokeAndBlock(() -> {
while (!myBoolean) {
Util.sleep(100);
}
});
更好的方法是:
timer = UITimer.schedule(100, true, () -> {
if(myBoolean) {
timer.cancel();
runThisMethod();
}
});
一个更复杂的问题是“为什么不添加一个监听器”?
既然布尔值是从监听器更改的,为什么不在触发它的监听器之后添加一个监听器并在那里完成工作?
【讨论】: