处理程序更新UI计时器

时间:2011-05-03 12:49:06

标签: android

我使用以下代码更新UI中的计时器。 然而,这段代码的问题在于,每过一秒,它就会以+1秒的速度更新。 我想我理解为什么会发生这种情况,但我不知道如何修复它。

        private Handler mHandler = new Handler();
        ....


    private Runnable mUpdateTimeTask = new Runnable() {
           public void run() {
                                mDifference = System.currentTimeMillis() - mStartTime;
                                workSum = workSum + mDifference;
                                TextViewTime.setText("Time so far: " + formatTime(workSum));
                                mHandler.postDelayed(this, 1000);

           }
        };

        public void onClick(View v) {
                switch (v.getId()) {
                case R.id.start_button:
                startButton.setEnabled(false);
                stopButton.setEnabled(true);

                        if (mStartTime == 0L) {
                    mStartTime = System.currentTimeMillis();
                    mHandler.removeCallbacks(mUpdateTimeTask);
                    mHandler.postDelayed(mUpdateTimeTask, 1000);
                        }

非常感谢帮助!

1 个答案:

答案 0 :(得分:1)

workSum = workSum + mDifference;似乎是你的问题,因为mDifference每次递增。 我认为workSum = mDifference;会解决它,甚至

mDifference = System.currentTimeMillis() - mStartTime;
TextViewTime.setText("Time so far: " + formatTime(mDifference));