Обновление пользовательского интерфейса с помощью Runnable & Handler Bug - PullRequest
0 голосов
/ 25 октября 2011

Я пытаюсь запустить таймер, но получаю странную ошибку при запуске таймера.Начинает считать с -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);
}

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

       }
    };

1 Ответ

3 голосов
/ 25 октября 2011

Вы используете две разные системы измерения.Либо используйте SystemClock.uptimeMillis(), либо используйте System.currentTimeMillis() для всех ваших измерений.

...