2011-10-25 11 views
0

私はタイマーを稼働させようとしていますが、私のタイマーが始動すると変なバグが発生します。それは-214342352:00から数え始めます。 http://developer.android.com/resources/articles/timed-ui-updates.htmlを見たことがありますが、私のコードに間違いが見つかりませんでした。Runnable&HandlerでUIを更新するバグ

private Handler mHandler = new Handler(); 
private long mStartTime = 0L; 

スタートタイマー

if (mStartTime == 0L) { 
      mStartTime = System.currentTimeMillis(); 
      mHandler.removeCallbacks(mUpdateTimeTask); 
      mHandler.postDelayed(mUpdateTimeTask, 1000); 
} 

Runnableを

public Runnable mUpdateTimeTask = new Runnable() { 
     public void run() { 


      final long start = mStartTime; 
      long millis = SystemClock.uptimeMillis()-start; 
      int seconds = (int) (millis/1000); 
      int minutes = seconds/60; 
      seconds  = seconds % 60; 

      if (seconds < 10) { 
       alarmCounter.setText("" + minutes + ":0" + seconds); 
      } else { 
       alarmCounter.setText("" + minutes + ":" + seconds);    
      } 

     // mHandler.postAtTime(this,start + (((minutes * 60) + seconds + 1) * 1000)); 
     mHandler.postDelayed(this, 1000); 

     } 
    }; 

答えて

3

あなたは、測定の2つの異なるシステムを使用しています。すべての測定にSystemClock.uptimeMillis()を使用するか、System.currentTimeMillis()を使用してください。

+0

uptimemillisはcurrenttimemillisよりもはるかに小さくなります –

+0

あなたは正しいです!私はそのような間違いをしたと信じられない:( – newbie