我有点坚持使用以下代码。我的目标是创建多个CountDownTimer对象并在彼此之后启动它们。该方法看起来像:
private CountDownTimer setUpCountdown(int duration, int tick) {
// when tick is not set, set it to default 1 second
tick = (tick == 0 ? 1 : tick);
// convert seconds to milliseconds and set up the timer
CountDownTimer timer = new CountDownTimer(duration*1000, tick*1000) {
public void onTick(long millisUntilFinished) {
if (countdown != null) {
int timeRemaining = (int) (millisUntilFinished / 1000);
countdown.setText(String.valueOf(timeRemaining));
}
}
public void onFinish() {
// hide the countdown button and remove it from baseLayout. set the background of baseLayout back to black
countdown.setVisibility(View.INVISIBLE);
baseLayout.removeView(countdown);
baseLayout.setBackgroundColor(Color.BLACK);
}
};
return timer;
}
然后我创建了两个计时器:
CountDownTimer timer1 = setUpCountdown(8,1);
timer1.start();
CountDownTimer timer2 = setUpCountdown(5,1);
timer2.start();
运行代码时,这些值的输出为:4..3..2..1..3,当它应为7..6 ... 1 4 ... 1当我使用10时持续5秒作为持续时间我在Android设备上获得一个从10到5计数的倒计时。看起来我正在创建的对象并不是真正彼此独立或(使用相同的变量)。你看到我做错了吗?
答案 0 :(得分:2)
您正在同时启动两个计时器,并在单textView
中显示它们的值,因此您只能看到第二个计时器4..1
的值,然后是{{1}的计时器的剩余值} sec将显示为8
3..1
您可以使用timer 7 6 5 4 3 2 1
// timer 2 will reset the values in text view, then after 1, you will see 3 2 1
timer 4 3 2 1
来验证行为,或者您必须使用不同的Toast
来实现所需的结果或实现所需的行为,您可以从{{1}创建并启动第二个计时器}