Обновление пользовательского интерфейса с ошибкой Runnable

#android #timer #handler #runnable #stopwatch

#Android #таймер #обработчик #runnable #секундомер

Вопрос:

Я пытаюсь запустить таймер, но при запуске моего таймера появляется странная ошибка. Он начинает отсчет с -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:

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

Комментарии:

1. да. uptimemillis будет намного меньше, чем currenttimemillis