TimerTask的运行一次后,我打电话timer.cancel()方法(TimerTask run

2019-09-29 03:17发布

TimerTask的运行一次后,我打电话timer.cancel()方法。 我不需要TimerMethod要执行我打电话stopBusTimer后()方法。

有人能解释为什么会发生?

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");
    }
}

Answer 1:

cancel的方法将停止所有以下处决,但不是当前。 它的方法执行需要很长的时间,那么就可以通过打电话的时候cancel ,该方法已经开始执行。

以确保该方法不执行最好的办法是打电话cancel从内部run()函数本身。



文章来源: TimerTask runs one more time after I call timer.cancel() method