这可能是一个非常简单的问题,但是,我如何使用计时器一次又一次地运行代码,直到布尔值为例如测试等于真的吗?
显然我会使用while循环,但我不希望它停止在主ui线程上发生的其余工作
答案 0 :(得分:1)
如果您的流程同时运行,请使用Handler并使用其postDelayed(Runnable, long)发布实施Runnable界面的回调。
一个相当天真的例子:
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>);
答案 1 :(得分:0)
您可以使用AlarmManager类来管理您的线程。它易于使用。
有关详细信息,请访问Android SDK Doc
答案 2 :(得分:0)
timer=new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Do your task
if(flagIsOn)
{
timer.cancel();
timer.purge();
}
}
}, 0, 1000);