我使用以下代码更新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);
}
非常感谢帮助!
答案 0 :(得分:1)
workSum = workSum + mDifference;
似乎是你的问题,因为mDifference每次递增。
我认为workSum = mDifference;
会解决它,甚至
mDifference = System.currentTimeMillis() - mStartTime;
TextViewTime.setText("Time so far: " + formatTime(mDifference));