2012-05-12 9 views
0

私はアンドロイド用のストップウォッチアプリケーションを作っています。私は開始と停止のための1つのボタンを持っています。私の問題は、時間が非常に速くなっていることです。どこが間違っているの?ベローはコードです:DOCとして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をrは一定の時間後に実行されるように、メッセージ・キューに追加されるようにしますと言うelapses.Updateあなたのタイマー1秒ごとのように: 使用

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

代わりの

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

here

ストップウォッチロジックを参照してください
+0

あなたの新しい問題を解決しようとしています。 –

関連する問題