代号一:等到给定的布尔值为真

时间:2018-10-03 15:43:10

标签: codenameone

我需要等到给定的布尔值为真。该布尔值由侦听器更新。所有代码都在EDT内部,因此不适用以下内容:

while (!myBoolean) {
    Util.sleep(100);
}

在给定的布尔值变为真之前,如何停止EDT内部的执行流(以正确的方式)?

1 个答案:

答案 0 :(得分:1)

简单的答案是:

invokeAndBlock(() -> {
    while (!myBoolean) {
       Util.sleep(100);
    }
});

更好的方法是:

timer = UITimer.schedule(100, true, () -> {
   if(myBoolean) {
      timer.cancel();
      runThisMethod();
   }
});

一个更复杂的问题是“为什么不添加监听器”?

由于布尔值已从侦听器更改,为什么不在触发它的侦听器之后添加侦听器并在那里进行工作?