如何检查布尔值,直到它为真

时间:2017-06-20 18:05:25

标签: java android

我是java的新手,想知道只有在布尔值为真时才能执行某些操作。

注意:我需要多次检查。

我使用这种方法,但我想知道另一种方式:

private void Check() {
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (boolean) {
                //Do Something...
            } else {
                Check();
            }
         }
    }, 10);
}

3 个答案:

答案 0 :(得分:2)

试试这个:

while(!aBoolean); //mind the semicolon.
//do something

但是这将使用更多的CPU。你可能想把它放在线程和睡眠线程中一段时间​​。

new Thread(new Runnable() {
    public void run() {
        while (!aBoolean) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException ignored) {
            }
        }
        //do something
    }
}).start();

答案 1 :(得分:0)

您可以使用javafx.beans.property.SimpleBooleanProperty代替boolean。然后你可以做

import javafx.beans.property.SimpleBooleanProperty;

//status is a SimpleBooleanProperty
SimpleBooleanProperty status = new SimpleBooleanProperty(false);

status.addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
            if (newValue) {
                //do something
            }
        }
    });

Check变得毫无意义,因为只有在值发生变化时才会调用changed(...) - 函数。

这也不会一直创建新的Runnables

缺点是,status = true变为status.set(true)if (status)变为if (status.get()),您必须在任何地方更改此内容。

答案 2 :(得分:-2)

我建议您这样做:

    //here status is a boolean variable     

    if (status) {
        //positive work`enter code here`
    } else {
        // negative work
    }