如何使计时器重复执行某些功能&关闭应用程序或按下后退按钮时停止

时间:2014-03-12 13:21:44

标签: java android

我试图每隔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 个答案:

答案 0 :(得分: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中再次启动处理程序。当你想让它停止时,只需要阻止循环的removeCallbacks。

答案 1 :(得分:1)

在Android中,您可以覆盖以下方法来识别反压和活动关闭,然后您可以使用代码取消计时器。 1. onDestroy() 2. onBackPressed()

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

例如:

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

我想这会有所帮助..