2016-07-29 20 views
1

TimerTask的运行一次后我请timer.cancel()方法。 我不需要在我调用stopBusTimer()方法后执行TimerMethod。TimerTask的运行一次后我请timer.cancel()方法

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

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

回答

3

cancel方法将停止所有后续执行,但不是当前的执行。如果您的方法执行需要很长时间,则可能在您拨打cancel时,该方法已开始执行。

确保该方法不执行的最佳方法是从run()函数本身中调用cancel

+0

感谢您的回答。我明白它是如何工作的。现在我需要弄清楚如何取消我在run()函数中发送的httprequest。 –