2016-05-27 13 views
1

我已經在我的Android代碼添加一個TimerTask後repeatetly叫:TimerTask的是時間的跳躍式前進

private class MyTimerTask extends TimerTask { 

    @Override 
    public void run() { 
     //do some task... 
    } 
} 

,並調用它,如下所示:

myTimer = new Timer(); 
//set the rate as 1 min 
myTimer.scheduleAtFixedRate(new MyTimerTask(), 0, 
        60*1000); 

現在,如果我關掉自動時間更新(從網絡)並將日期設置爲明天的日期,然後計時器任務開始每隔5毫秒開始運行一次。

對於這個我沒有任何線索爲什麼發生,我需要解決這個問題。我已經使用處理程序,但我希望TimerTask行爲正常。

請幫我在這方面...

+0

你爲什麼要用'TimerTask'?你已經有'Handler'的東西了嗎? – pskink

回答

2

由於您使用scheduleAtFixedRate,而不是schedule它試圖趕上「錯過」執行的最後一天。

API documentation

隨着固定利率執行,任務的每個連續運行的開始時間定爲無時,以前的運行發生了一點。如果延遲阻礙計時器按時啓動任務,這可能會導致一連串的集羣運行(一個接一個地運行)。

+0

所以如果我使用schedule()而不是scheduleAtFixedRate(),它會解決問題吧? – Dharsam1990

+0

我懷疑,是的。如果這符合您的需求,請查看JavaDoc。 –