0

我试图让计时器运行,但是当我的计时器启动时出现一个奇怪的错误。它从 开始计数-214342352:00。我浏览了http://developer.android.com/resources/articles/timed-ui-updates.html但找不到我的代码有什么问题。

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

启动计时器

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

可运行

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

       }
    };
4

1 回答 1

3

您正在使用两种不同的测量系统。使用SystemClock.uptimeMillis()System.currentTimeMillis()用于所有测量。

于 2011-10-25T18:37:17.800 回答