Метод CountDown Timer OnTick не работает, когда я даю время - PullRequest
0 голосов
/ 14 ноября 2018
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()

1 Ответ

0 голосов
/ 14 ноября 2018

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

...