Can't stop countdown after minimize screen

Viewed 24

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()
    }

After start activity the the method onTick success call every second. Nice. After minimize screen call method onPause , but onTick not stop.It's call every one second.

1 Answers

Inside onStop(), save the value of waitingTimeRemainingMillis in a separate variable, say temp (which has the whole class as the scope) and then cancel the CountDownTimer object. Inside onResume, store the value of temp in waitingTimeRemainingMillis and start the CountDownTimer.

Related