在我调用 timer.cancel() 方法后,TimerTask 又运行了一次
TimerTask runs one more time after I call timer.cancel() method
TimerTask 在我调用 timer.cancel() 方法后又运行了一次。
我不需要在调用 stopBusTimer() 方法后执行 TimerMethod。
有人可以解释为什么会这样吗?
busTimer = new Timer();
busTimer.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod(mSelectedRoute);
}
}, 0, Consts.BUS_TIMER_INTERVAL);
private void stopBusTimer() {
if (busTimer != null) {
busTimer.cancel();
busTimer.purge();
busTimer = null;
Log.v(LOG_TAG, "stop BusTimer");
}
}
cancel
方法将停止所有后续执行,但不会停止当前执行。如果你的方法执行时间比较长,那么有可能你调用的时候cancel
,方法已经开始执行了
确保该方法不执行的最佳方法是从 run()
函数本身内部调用 cancel
。
TimerTask 在我调用 timer.cancel() 方法后又运行了一次。 我不需要在调用 stopBusTimer() 方法后执行 TimerMethod。
有人可以解释为什么会这样吗?
busTimer = new Timer();
busTimer.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod(mSelectedRoute);
}
}, 0, Consts.BUS_TIMER_INTERVAL);
private void stopBusTimer() {
if (busTimer != null) {
busTimer.cancel();
busTimer.purge();
busTimer = null;
Log.v(LOG_TAG, "stop BusTimer");
}
}
cancel
方法将停止所有后续执行,但不会停止当前执行。如果你的方法执行时间比较长,那么有可能你调用的时候cancel
,方法已经开始执行了
确保该方法不执行的最佳方法是从 run()
函数本身内部调用 cancel
。