Таймер обратного отсчета запускается в разное время в приложении для Android

У меня есть приложение, в котором 2 таймера запускаются при нажатии кнопки.

Когда они запускаются, обратный отсчет таймера отображается в текстовом представлении, поэтому пользователь видит обратный отсчет секунд (10,9,8,7 и т. Д.).

Один счетчик - это 45-секундный таймер, другой - 30-секундный. Я заметил, что когда таймеры запускаются, они действуют одним из двух способов: либо обратный отсчет таймера показывает секунды, начиная с правильного (затем пропускает один) 45, 43, 42, 41 и т. Д.), Либо в другой раз, когда он не отображается начальное значение и сразу переходит к (44, 43, 42, 41 и т. д.) и ничего не пропускает.

В конечном итоге я бы хотел, чтобы эти таймеры разумно отображали начальное значение и обратный отсчет. Т.е. всегда сначала отображается 45, затем 44, 43, 42, 41 и т. д.

Есть мысли о том, почему это может или не может это делать? Я использую android CountDownTimer в своем классе.

Обновлено: вот мой код для таймера CountDownTimer

    public CountDown (long millisInFuture, long countDownInterval, Button button ) {
    super(millisInFuture, countDownInterval);
    this.button = button;
}


//Timer Countdown
@Override
public void onTick(long millisUntilFinished) {
    long timeRemaining = (millisUntilFinished/1000);
    button.setText((millisUntilFinished/1000)+"");

person Hanny    schedule 25.02.2013    source источник


Ответы (1)


Я попытался воспроизвести проблему, но не смог. Может выложить свой код?

Вот мой простой тест, он сначала показал 45, затем последовал обратный отсчет и закончил на нуле.

    Button b = (Button) findViewById(R.id.button1);
    final TextView tv = (TextView) findViewById(R.id.tv_1);

    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            new CountDownTimer(45 * 1000, 1000) {
                int x = 45;

                @Override
                public void onTick(long millisUntilFinished) {
                    tv.setText(Integer.toString(x));
                    x--;

                }

                @Override
                public void onFinish() {
                    tv.setText("0");

                }
            }.start();

        }
    });
person Josh    schedule 25.02.2013
comment
Извините, я неправильно понял язык - я не выполняю TextView, а текст кнопки. Я обновил выше мой код для своего CountDownTimer - Спасибо! - person Hanny; 25.02.2013
comment
Хотя я не стал использовать ваш метод, я отмечу его как ответ, потому что он действительно работает. - person Hanny; 28.02.2013