提问者:小点点

如何让定时器重复执行某些功能


我正在尝试每5秒重复执行一些函数

我希望此计时器在应用程序关闭或按下后退按钮时停止。

  int delay = 0; 
        int period = 5000; // repeat every sec.
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                System.out.println("done");
            }
        }, delay, period);
    }

共2个答案

匿名用户

不要使用Timer只需使用Handler

private boolean keepLooping = true;
private static final int DELAY = 1000 * 5;
final Handler printHandler = new Handler();
Runnable printStuff = new Runnable(){

     @Override
     public void run(){
         System.out.println("done");
         if(keepLooping)
             printHandler.postDelayed(this, DELAY);
     }

}

//wherever you want to start your printing
printHandler.postDelayed(printStuff, DELAY);
keepLooping = true;


//when back is pressed or app is stopped
keepLooping = false;
printHandler.removeCallbacks(printStuff);

postDelayed将在您想要的延迟上运行runnable。如果您希望它永远循环,只需从runnable中再次启动处理程序。当您希望它停止时,只需删除回调,这将阻止循环。

匿名用户

在Android中,您可以覆盖以下方法来识别回按和活动关闭,然后您可以拥有取消计时器的代码。1. onDestroy()2.onBackP的()

在方法实现中,您可以使用以下语句来停止。timer.取消();timer. purge();

前:

  @Override
    public void onBackPressed() {
    timer.cancel();
    timer.purge();
    super.onBackPressed();
    }

我想这会有所帮助…