ожидание - PullRequest
       1

ожидание

1 голос
/ 22 декабря 2011

Я не понимаю, как pause counterdowntimer.У меня есть общедоступный отсчет времени:

    public CountDownTimer myTimer = new CountDownTimer(300000, 1000) {
    public void onTick(long millisUntilFinished) {
        ...
        setCurrentTime(currentTime);
    }
    public void onFinish() {
        setCurrentTime("0");
    }
};

Я могу .start() и .cancel() по buttonclick, но не могу .wait(). Dev Docs говорит

Этот метод может быть вызван только потоком, которому принадлежит монитор этого объекта;см. notify () о том, как поток может стать владельцем монитора.

что это значит?

Я пытался сохранить millisUntilFinished в переменной, но как это сделать?Я перезапускаю timer с этого значения?

Есть ли другое решение?

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Вы можете реализовать глобальную переменную, например, private Boolean pauseTimer=false;, а затем проверить onTick, является ли переменная истинной, и если это так, вызвать SystemClock.sleep()

0 голосов
/ 09 марта 2013

Я нашел эту ссылку для синхронизации таймера

http://www.java2s.com/Open-Source/Android/Timer/multitimer-android/com/cycleindex/multitimer/CountDownTimerWithPause.java.htm

0 голосов
/ 22 декабря 2011

Вы не можете ждать () объекта, если текущий поток не владеет монитором этого объекта. Для этого необходимо синхронизироваться на нем.

...