我需要多次执行任务,直到满足某些条件。代码:
handler = new Handler();
runnableCode = new Runnable() {
@Override
public void run() {
doThings();
}
};
handler.postDelayed(runnableCode, 200);
方法doThings:
private void doThings(){
//conditions are met
stopRunnable();
}
方法stopRunnable:
private void stopRunnable(){
handler.removeCallbacks(runnableCode);
}
这样,doThings()方法只执行一次。我该怎么办?
谢谢
我建议你试试:
handler=new Handler();
runnableCode = new Runnable() {
@Override
public void run() {
doThings();
if(condition){
handler.postDelayed(runnableCode, 200);
}
}
};
handler.postDelayed(runnableCode, 200);
方法stopRunnable:
private void stopRunnable(){
handler.removeCallbacksAndMessages(null);
}
PostDelayed告诉它在200ms内调用unnable。如果你希望在另一个200ms内再次调用它,你的runnable必须再次将自己发布到Handler。
这很简单,递归调用你的Runnable如下:
handler=new Handler();
runnableCode = new Runnable() {
@Override
public void run() {
doThings();
// just add this line
handler.postDelayed(this, 200);
}
};
handler.postDelayed(runnableCode, 200);