我试图每隔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);
}
答案 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();
}
我想这会有所帮助..