2014-01-29 47 views
0

我發現很奇怪不是有一個TimerTask一個普通的執行時間...... 我安排一個,有延時:1000米的毫秒和運行時,記錄了它...... 有時它是+1 millisec scheduledExecutionTime(作爲傳感器時間戳)是相對系統正常運行時間,以納秒錶示(文檔中沒有說明)安卓:安排TimerTask的不正規scheduledExecutionTime

是否有任何原因導致此不穩定計時?

 // BEGINNING OF THREAD RUN 
     @Override 
     public void run() { 
      mRunning = true; 
      RecordingTimerTask recordingTask = new RecordingTimerTask(); 
      Timer recordingTimer = new Timer(); 
     recordingTimer.schedule(recordingTask, 0, 1000); 
     ..... 

      class RecordingTimerTask extends TimerTask { 
      public void run() { 
     String data = "" + scheduledExecutionTime(); 
      for (int i = 0; i < 3; i++) { 
       data = data + ";" + timestamps[i]; 
      } 
     .... 

記錄的數據:

1391015410050 0 
1391015411050 1000 
1391015412050 1000 
1391015413050 1000 
1391015414050 1000 
1391015415051 1001 <+ 1 
1391015416051 1000 
1391015417052 1001 <+ 1 
1391015418052 1000 
1391015419052 1000 
1391015420052 1000 
1391015421052 1000 
1391015422052 1000 
1391015423052 1000 
1391015424052 1000 
1391015425052 1000 
1391015426053 1001 <+ 1 
... 
+0

請閱讀定時器的文件,特別是關於固定期限和固定利率之間的差額的章節。我認爲這應該回答你的問題。 – njzk2

回答

1

這實際上是從最現實世界的情況相當準確。 TimerTask(如Timer和CountDownTimer)全部在不高優先級的後臺線程中運行。其他線程(如UI線程)可能會執行並阻止。

看看這篇文章,我的回答有:

Android - CountDownTimer interval is not constant