2016-07-29 46 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。 –