为什么for循环不在TmerTask中执行

时间:2018-10-17 06:07:25

标签: java android

我想每隔一段时间在服务内部的代码下面重复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 ");}

        }


    };
}

2 个答案:

答案 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吗?