0

私はアンドロイド用のストップウォッチアプリケーションを作っています。開始と停止のボタンが1つあります。私の問題は、時間が非常に速く増加していることです。私が間違っているところ。以下はコードです:

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

1 に答える 1

1

doc say postDelayedは、Runnable rをメッセージキューに追加し、指定された時間が経過した後に実行されるようにします.1秒ごとにタイマーを次のように更新します。

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

それ以外の

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

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

于 2012-05-12T12:33:30.517 に答える