2015-10-31 4 views
0

Привет всем и спасибо заранее !,CountDownTimer странное поведение

У меня CountDownTimer, что я хочу сделать паузу в то время как я показываю все большее количество от 1 до заданного числа с интервалом. Дело в том, что с приведенным ниже кодом счетчик иногда достигает 29, но иногда только 28, и я не знаю почему.

Может ли кто-нибудь мне помочь ?.

public void CountDown(View v) 
{ 
    int FinishNumber = 30; 

    final CountDownTimer CountDown = new CountDownTimer(FinishNumber * 100, 100) 
    { 
     int NumberToShow = 1; 

     public void onTick(long millisUntilFinished) 
     { 
      CopyrightTV.setText(String.valueOf(NumberToShow++)); 
     } 

     public void onFinish() 
     { 
      CopyrightTV.setText(String.valueOf(NumberToShow)); 
      this.cancel(); 
     } 
    } 
      .start(); 
} 

ответ

0

Это не такое странное поведение - принять во внимание, что первый OnTick (длинный millisUntilFinished) вызывается только после того, как 100мс (то есть интервал вы установили), а не тогда, когда вы начинаете CountDownTimer.

Во-вторых, CountDownTimer не является точным таймером на 100%, поэтому вы можете ожидать этого «странного поведения».

EDIT

Если точность не очень важна, вы могли бы попробовать увеличить CountDownTimer на несколько сотен миллисекунд, что-то вроде этого:

public void CountDown(final TextView v) 
    { 
    final int FinishNumber = 30; 

    final CountDownTimer CountDown = new CountDownTimer((FinishNumber + 4) * 100, 100) 
    { 
     int NumberToShow = 1; 

     public void onTick(long millisUntilFinished) 
     { 
      if (NumberToShow < FinishNumber) 
       v.setText(String.valueOf(NumberToShow++)); 
     } 

     public void onFinish() 
     { 
      if (NumberToShow < FinishNumber) 
       v.setText(String.valueOf(NumberToShow)); 
     } 
    } 
     .start(); 
} 
+0

Спасибо Уди Идан, так как бы вы сделали Что я хочу сделать? Какой метод, функция и т. Д. Вы бы использовали? – Mazinger

+0

Я отредактировал свой ответ, посмотрю, помогает ли он –

+0

Еще раз спасибо Udi, похоже, он работает лучше. – Mazinger