创建CountDownTimer对象的方法

时间:2018-01-19 13:58:52

标签: java android countdowntimer

我有点坚持使用以下代码。我的目标是创建多个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计数的倒计时。看起来我正在创建的对象并不是真正彼此独立或(使用相同的变量)。你看到我做错了吗?

1 个答案:

答案 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}创建并启动第二个计时器}