Проблемы с таймером CountDownTimer?

Всем привет, пытаюсь разобраться с таймером, но он работает как-то странно, либо я не понимаю(скорее это)

public class MyTimer extends CountDownTimer{
    int current_prg = 80;
    public GameTimer(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }

    @Override
    public void onTick(long l) {
        current_prg--;
        Log.d("TAG", "TICK "+l+" : "+current_prg);
    }

    @Override
    public void onFinish() {
        Log.d("TAG", "FINISH : "+current_prg);
    }
}

Запускаю:
MyTimer timer = new MyTimer(8000,100);// каждые 100 миллисекунд в течении 8 секунд (80 раз) 
timer.start();

___
По идее, как я понял, каждые 100 миллисекунд будет выполнятся onTick, как пройдет 8 секунд выполнится onFinish

И в моем случае current_prg должен быть равен 0, но он равен когда 21, когда 30, почему?
Не понимаю...

Еще onTick(long l) - думал l будет кратно 100, например 7900,7800,7700 и тд, но в деле он идет примерно так:
7880, 4999,4897 и тд (взял из лога)

Объясните пожалуйста, почему так, вообще понять не могу...
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Так как у вас не система реального времени и поэтому android переключается между задачами(запущенными приложениями). Как появилась возможность, так и выполнил ваш метод.
Вам не гарантируется, что будет выполнено ровно через 100 мс, но гаранитируется, что выполнится не раньше чем через 100 мс.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы