Samira Radwan Ответов: 0

Обратный отсчет времени не работает, если я позвоню cancel


Всем привет,

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

пожалуйста, проверьте мой код ниже и дайте мне знать.
Заранее спасибо

Что я уже пробовал:

private void StartVideoTimer(int countdownPeriod){
Log.d(LOG_TAG, "[startVideoTimer] - Starting timer for video (in calibration), countdown period = " + countdownPeriod);
/**tried to cancel here*/
//        if (inCalibrationVideoTimer != null) {
//            inCalibrationVideoTimer.cancel();
//            inCalibrationVideoTimer = null;
//        }

streamIsRunning = true;

inCalibrationVideoTimer = new CountDownTimer(countdownPeriod, VIDEO_TIMER_INTERVAL) {
            @Override
            public void onTick(long millisUntilFinished) {
                final int secondsLeft = (int) millisUntilFinished / 1000;
                Log.d(LOG_TAG, "[onTick] - Seconds left = " + secondsLeft);

                SharedPreferences.Editor editor = getSharedPreferences(PREFERENCES_FILE, Context.MODE_PRIVATE).edit();
                editor.putInt("inCalibrationvideoTimerCountdown", secondsLeft);
                editor.apply();

                try {
                    if (streamIsRunning) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
							videoTimeTextView.setText(String.format(getString(R.string.common_timer_format), secondsLeft));
                            }
                        });
                    }
                }
                catch (IllegalStateException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFinish() {
                try {
                    if (streamIsRunning) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                videoTimeTextView.setText(String.format(getString(R.string.common_timer_format), 20));
                            }
                        });
                    }
                }
                catch (IllegalStateException e) {
                    e.printStackTrace();
                }
            }
        }.start();
/**tried to cancel here but not working*/
    }

Richard MacCutchan

Каково значение VIDEO_TIMER_INTERVAL?

Samira Radwan

VIDEO_TIMER_INTERVAL = 1000

wseng

где ваша кнопка отмены ?

Samira Radwan

Там нет кнопки отмены. Мой код отмены находится в комментарии в начале метода. Должен ли таймер иметь кнопку отмены?

Richard MacCutchan

Я все еще в замешательстве относительно реальной проблемы, которая у вас есть. Что вы имеете в виду под этим, - таймер не останавливается и считает очень быстро."?

Samira Radwan

проблема в том, что если я не звоню (отменяю), таймер отсчитывает очень быстро и не останавливается. он закрывает видео через 20 секунд, но продолжает работать

0 Ответов