Java 如何使用计时器反复运行代码,直到布尔值(例如测试)等于true?
这可能是一个非常简单的问题,但是,如何使用计时器一次又一次地运行代码,直到布尔值(例如Testing)等于trueJava 如何使用计时器反复运行代码,直到布尔值(例如测试)等于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
显然,我会使用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);