我正在尝试每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);
}
不要使用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();
}
我想这会有所帮助…