Не удается остановить обратный отсчет после сворачивания экрана - PullRequest
2 голосов
/ 18 июня 2020

Android Studio 4.0

  private var countDownTimer: CountDownTimer? = null
 countDownTimer = object : CountDownTimer(waitingTimeRemainingMills, COUNT_DOWN_INTERVALE_MILLSECONDS) {
            @SuppressLint("DefaultLocale")
            override fun onTick(millisUntilFinished: Long) {
                minutesAndSeconds = String.format(getString(R.string.countdown_time_format),
                        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
                        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)
                                - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)))
                waitingCountdownDateTextView.setText(minutesAndSeconds);
                if (BuildConfig.DEBUG)
                    Log.d(TAG, "initToolbarAndTopContainer:\nonTick, millisUntilFinished = $millisUntilFinished")
            }

            override fun onFinish() {
                //mTextField.setText("done!")
            }
        }.start()


override fun onPause() {
        super.onPause()
        countDownTimer?.cancel()
    }

    override fun onResume() {
        super.onResume()
        countDownTimer?.start()
    }

После запуска метод onTick успешно вызывает каждую секунду. Ницца. После сворачивания экрана вызывается метод onPause, но onTick не останавливается. Он вызывается каждую секунду.

1 Ответ

0 голосов
/ 18 июня 2020

Внутри onStop () сохраните значение waitTimeRemainingMillis в отдельной переменной, скажем, temp (которая имеет весь класс в качестве области видимости), а затем cancel объект CountDownTimer. Внутри onResume сохраните значение temp в waitTimeRemainingMillis и запустите CountDownTimer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...