我想每隔一段时间在服务内部的代码下面重复for loop
,但是它只打印一行并且只运行一次
public void startTimer() {
timer = new Timer();
initializeTimerTask();
timer.schedule(timerTask, 10000);
}
public void initializeTimerTask() {
timerTask = new TimerTask() {
public void run() {
for (int i=0; i<10; i++){
Log.i("TAG", " inside method ");}
}
};
}
答案 0 :(得分:0)
您正在调用以下方法。
public void schedule(TimerTask task, long delay)
因此,任务在延迟后仅执行一次。 如果要定期执行,则需要调用以下方法(可以为延迟和周期传递相同的值)
public void schedule(TimerTask task, long delay, long period)
您的另一个查询是仅打印第一行。这很可能是日志问题。尝试使用System.out.print()
而不是Log.i()
进行调试。
答案 1 :(得分:0)
class MyTimerTask extends TimerTask {
private int counter = 1;
public void run() {
timerHandler.post(new Runnable() {
public void run() {
Toast.makeText(this, "" + counter, Toast.LENGTH_SHORT).show();
counter++;
}
});
if (counter == 10) {
myTimer.cancel();
myTimer.purge();
}
}
}
//多数民众赞成在ButtonClick上使用
MyTimerTask myTimerTask = new MyTimerTask();
Timer myTimer = new Timer();
myTimer.schedule(myTimerTask, 500, 1000);
您真的需要运行Loop吗?