Java 如何使用计时器反复运行代码,直到布尔值(例如测试)等于true?

Java 如何使用计时器反复运行代码,直到布尔值(例如测试)等于true?,java,android,android-layout,android-activity,Java,Android,Android Layout,Android Activity,这可能是一个非常简单的问题,但是,如何使用计时器一次又一次地运行代码,直到布尔值(例如Testing)等于true 显然,我会使用while循环,但我不希望它停止在主ui线程上进行的其余工作如果您的进程正在同时运行,请使用并使用its发布实现该接口的回调 一个相当天真的例子: final handler = new Handler(); final Runnable r = new Runnable() { public void run() { if (<EXPRESS

这可能是一个非常简单的问题,但是,如何使用计时器一次又一次地运行代码,直到布尔值(例如Testing)等于true


显然,我会使用while循环,但我不希望它停止在主ui线程上进行的其余工作

如果您的进程正在同时运行,请使用并使用its发布实现该接口的回调

一个相当天真的例子:

final handler = new Handler();

final Runnable r = new Runnable() {
    public void run() {
    if (<EXPRESSION>) {
        // Evaluated true, do your stuff and exit the polling loop.
    } else {
        handler.postDelayed(this, <TIMEOUT>);
    }
}

handler.postDelayed(r, <TIMEOUT>);
final handler=new handler();
最终可运行r=新可运行(){
公开募捐{
如果(){
//如果评估为true,则执行您的操作并退出轮询循环。
}否则{
handler.postDelayed(此,);
}
}
后延迟(r,);

您可以使用AlarmManager类来管理线程。使用起来很简单


要了解更多信息,您可以访问

嗯,我不知道它是否适用于android,或者它是否是一个好主意,但有一个石英库…它有点重…while loop for Use是什么?可以尝试使用IntentService和RunnableTo来确认我是否将布尔变量“testing”放入表达式所在的位置,测试为真时handler将停止。是的,它将不再发布自己以在以后运行。请注意,函数run()仍将在主ui线程上执行。有几种方法可以在自己的线程中启动处理程序,但这是一种责任,因为对视图的任何更改都必须在ui线程上完成。
         timer=new Timer();
         timer.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {

            // Do your task
            if(flagIsOn)
            {
             timer.cancel();
             timer.purge();
             }


            }
        }, 0, 1000);