循环倒计时
Looping through Countdown
我试图多次循环 CountDownTimer,但问题是循环在计时器结束之前结束,因此倒计时只运行一次。
循环定时器的函数
private void doWorkout(){
int currentSet = 1;
for (int i = 1; i<= NUMBER_OF_SETS; i++){
Log.d(TAG, "doWorkout: iteration " + i);
startWorkoutTimer();
//make for loop sleep till timer is done
}
}
private void startWorkoutTimer() {
mWorkoutCountDownTimer = new CountDownTimer(START_TIME, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mWorkRestLabel.setText("Work");
mWorkRestLabel.setVisibility(View.VISIBLE);
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
mWorkoutTimerRunning = false;
mButtonStartPause.setText("start");
mButtonStartPause.setVisibility(View.INVISIBLE);
mButtonReset.setVisibility(View.VISIBLE);
mWorkRestLabel.setVisibility(View.INVISIBLE);
startRestTimer();
}
}.start();
mWorkoutTimerRunning = true;
mButtonStartPause.setText("pause");
mButtonReset.setVisibility(View.INVISIBLE);
}
for
循环不会等待 CountDownTimer
完成。所以它同时启动所有计时器,所以它看起来只 运行 一次。
要解决此问题,您必须在 startRestTimer()
中启动一个新计时器而不是循环(根据您的代码,它在计时器后的 onFinish()
和 运行 中完成)当 NUMBER_OF_SETS
> 0 并递减 NUMBER_OF_SETS
.
所以,会运行一个接一个。
希望对您有所帮助。
我试图多次循环 CountDownTimer,但问题是循环在计时器结束之前结束,因此倒计时只运行一次。
循环定时器的函数
private void doWorkout(){
int currentSet = 1;
for (int i = 1; i<= NUMBER_OF_SETS; i++){
Log.d(TAG, "doWorkout: iteration " + i);
startWorkoutTimer();
//make for loop sleep till timer is done
}
}
private void startWorkoutTimer() {
mWorkoutCountDownTimer = new CountDownTimer(START_TIME, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mWorkRestLabel.setText("Work");
mWorkRestLabel.setVisibility(View.VISIBLE);
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
mWorkoutTimerRunning = false;
mButtonStartPause.setText("start");
mButtonStartPause.setVisibility(View.INVISIBLE);
mButtonReset.setVisibility(View.VISIBLE);
mWorkRestLabel.setVisibility(View.INVISIBLE);
startRestTimer();
}
}.start();
mWorkoutTimerRunning = true;
mButtonStartPause.setText("pause");
mButtonReset.setVisibility(View.INVISIBLE);
}
for
循环不会等待 CountDownTimer
完成。所以它同时启动所有计时器,所以它看起来只 运行 一次。
要解决此问题,您必须在 startRestTimer()
中启动一个新计时器而不是循环(根据您的代码,它在计时器后的 onFinish()
和 运行 中完成)当 NUMBER_OF_SETS
> 0 并递减 NUMBER_OF_SETS
.
所以,会运行一个接一个。
希望对您有所帮助。