Метод CountDown Timer OnTick не работает, когда я даю время

1
I'm Running one count down timer for 15 minutes which is equals to 100%,

Когда я нахожусь в приложении, это прекрасно работает для меня. Что я делаю, так это когда я закрываю приложение, я экономлю время запуска и открываю приложение, принимая текущее время и вычисляя оставшееся время. Я даю оставшееся время методу ontick перед запуском таймера обратного отсчета. на первом тике показывается правильно, но на следующем тике, начиная с 15 минут. Может кто-нибудь сказать, почему это происходит

 countDownTimer = object : CountDownTimer(900000, 1000) {
                override fun onTick(millisUntilFinished: Long) {
                    activity?.runOnUiThread {
                        val minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)
                        val seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))

                        val progress = 100 - ((((minutes / 15f) + (seconds / 900f)) * 100).toInt())

                        if (progress == 100) {
                            countDownTimer.cancel()
                            batteryHealthView.hideProgress()
                        }
                        saveData(progress, percentageString)
                    }
                }

                override fun onFinish() {
                    activity?.runOnUiThread {
                        countDownTimer.cancel()
                    }
                }
            }
            if (timeLeft!! > 0) {
                countDownTimer.onTick(timeLeft)
            }
            countDownTimer.start()
Теги:
kotlin
timer
countdown

1 ответ

1
Лучший ответ

Поделитесь кодом того, как вы вызываете CountDownTimer (900000, 1000) Кажется, вы используете 900000 каждый раз, вместо этого вам нужно пересчитать оставшееся время и передать это время в вызове метода.

  • 0
    Весь код, который я просто вызываю в обычном методе, переменная обратного отсчета, которую я объявил как (private lateinit var countDownTimer: CountDownTimer), и метод, который я вызываю, - (fun countDownTimer (activity: FragmentActivity? Долго?)) Оставшееся время - не что иное, как время повторного обучения, которое я прохожу, и каждый раз, когда мне нужно продолжить процесс, вместо этого, начиная с 0
  • 0
    Вам не нужно каждый раз проходить 900000, вам нужно хранить потраченное время, когда вы выходите из приложения, и пересчитывать оставшееся время, когда вы возвращаетесь в приложение, и передавать это время в конструкцию.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню