对于我的项目,当我点击“A”按钮时,我每隔10秒尝试执行一次方法 当我再次点击按钮时(应该打开/关闭)它应该停止。
这是我达到的目的: - /:
ButtonA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
showCurrentLocation();
Methodexecute();
}
}, 10000);
}
}
});
如何每隔10秒重复执行此方法,直到再次单击该按钮?
感谢
答案 0 :(得分:1)
考虑使用带TimerTask的Timer,每隔10秒进行一次调度。 我希望这会奏效:
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
//insert your methods here
}
};
boolean taskIsRunning = false;
if(taskIsRunning){
timer.cancel();
taskIsRunning = false;
} else {
timer.schedule(task, 0, 10000);
taskIsRunning = true;
}
答案 1 :(得分:1)
handler = new Handler();
ButtonA.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
handler.postDelayed(new Runnable() {
public void run() {
if(taskIsRunning){
showCurrentLocation();
Methodexecute();
handler.postDelayed(this,10000);
}
}
}, 10000);
}
}
});
答案 2 :(得分:0)
在onClick方法中,您还可以像这样切换计时器任务:
...
@Override public void onClick(View v) {
...
toggleTask();
...
}
...
然后,从Jonathan的代码中,类似
boolean taskIsRunning = false;
Timer timer;
TimerTask task = new TimerTask() {
@Override
public void run() {
//insert your methods here
}
};
private void toggleTask() {
if(taskIsRunning){
timer.cancel();
taskIsRunning = false;
} else {
timer = new Timer()
timer.schedule(task, 0, 10000);
taskIsRunning = true;
}
}