//自应用程序启动以来的时间计数器,一个后台任务
private long mStartTime = 0L;
//私有 long mPauseTime = 0L;
private TextView mTimerLabel;
//Handler 处理消息到定时器任务
private Handler mHandler = new Handler();
static final int UPDATE_INTERVAL = 1000;
String timerStop1;
@Override
public void onCreate(Bundle savedInstanceState) {
mTimerLabel = (TextView) findViewById(R.id.textTimer);
if(mStartTime == 0L){
mStartTime = SystemClock.uptimeMillis();
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 100);
}
timerPauseButton.setTag(1);
timerPauseButton.setText("Pause");
final Button timerPauseButton = (Button) findViewById(R.id.btnTimerPause);
timerPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
//更改按钮文本
final int status =(Integer) view.getTag();
if(status == 1) {
mHandler.removeCallbacks(mUpdateTimeTask);
mTimerLabel.setText(timerStop1);
timerPauseButton.setText("Resume");
view.setTag(0); //resume
} else{
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 100);
timerPauseButton.setText("Pause");
view.setTag(1); //pause
}
}
});
}
//OnCreate结束
private Runnable mUpdateTimeTask = new Runnable(){
public void run() {
{
final long start = mStartTime;
long millis = SystemClock.uptimeMillis()- start;
int seconds = (int) (millis / 1000);
int minutes = seconds / 60;
seconds = seconds % 60;
mTimerLabel.setText("" + minutes + ":"
+ String.format("%02d", seconds));
timerStop1 = minutes + ":"
+ String.format("%02d", seconds);
mHandler.postDelayed(this, 200);
}
}
};
为什么我单击暂停按钮但计时器也会在后台运行?例如,当我在 5 秒后单击 3 秒内的暂停时,我单击了恢复,但它继续以 8 秒而不是 3 秒继续?谢谢