2012-05-12 4 views
0

Я делаю приложение секундомера для Android. У меня есть одна кнопка для начала и остановки. Моя проблема в том, что время растет очень быстро. Где я ошибаюсь. Беллоу код:Android StopWatch - время увеличивается очень быстро

 final Runnable updater = new Runnable() { 

     public void run() { 

      if (startIsPressed) { 
       time = SystemClock.elapsedRealtime() - initStart + startPointTime; 
       startPointTime = time; 
      } else { 
       time = startPointTime; 
      } 

      hh = time/3600000; 
      hours.setText("" + formatter.format(hh)); 
      time = time - hh * 3600000; 

      mm = time/60000; 
      minutes.setText("" + formatter.format(mm)); 
      time = time - mm * 60000; 

      ss = time/1000; 
      seconds.setText("" + formatter.format(ss)); 
      time = time - ss * 1000; 

      millis.setText("" + formatter.format(time/10)); 

      handler.postDelayed(this, 30); 
     } 
    }; 
    startBtn.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (!startIsPressed) { 
       startIsPressed = true; 
       startBtn.setText(R.string.stop); 
       initStart = SystemClock.elapsedRealtime(); 
       handler.post(updater); 
      } else { 
       startIsPressed = false; 
       startBtn.setText(R.string.start); 
       handler.post(updater); 
      } 
     } 
    }); 
} 
+0

см. Это сообщение возможно полезно http://stackoverflow.com/questions/3733867/stop-watch-logic –

+0

спасибо за повтор, но все же моя проблема в том, как начать отсчет времени, где остановился. Пример, показанный в ссылке, только останавливает таймер и начинается с начала снова. – dgjorg

ответ

1

, как док сказать postDelayed Вызывает Runnable г, которые будут добавлены в очередь сообщений, которые будут работать по истечении заданного промежутка времени elapses.Update таймер каждый 1 второй как: использования

handler.postDelayed(this, 100); //100 milliseconds refresh rate 

вместо

handler.postDelayed(this, 30); //30 milliseconds refresh rate 

и посмотреть секундомер логика here

+0

thanx friend Я пытаюсь решить вашу новую проблему –