CountDownTimer in android - how to restart it

后端 未结 5 1381
攒了一身酷
攒了一身酷 2021-01-04 03:26

I to restart a CountDownTimer. I read a lot of question here but no one of the answer helped me. When I use the following code

if(Const.counter != null){
            


        
相关标签:
5条回答
  • 2021-01-04 04:15
    private fun startTimer() {
        var timeInMilliSeconds = 11000L
        val countDownTimer: CountDownTimer = object : CountDownTimer(timeInMilliSeconds, 1000) {
            override fun onFinish() {
                Timber.d("Times Up!")
                setupResult("")
                this.cancel()
                timeInMilliSeconds = 11000L
                this.start()
            }
    
            override fun onTick(p0: Long) {
                val seconds = (p0 / 1000) % 60
                Timber.d("Timer: $p0")
                timer?.text = "$seconds"
            }
        }
        countDownTimer.start()
    }
    
    0 讨论(0)
  • 2021-01-04 04:21

    coutdown timer for quiz

     if(countDownTimer!=null)
                {
                    countDownTimer.cancel();
                    countDownTimer.start();
                    }
                else {
                   countDownTimer = new CountDownTimer(30000, 1000) {
    
                        public void onTick(long l) {
                            mtimer.setText("remaining time" + l / 1000);//mtime is a textview
                        }
    
                        public void onFinish() {//here mnext is the button from which we can get next question.
                            mnext.performClick();//this is used to perform clik automatically
    
                        }
                    }.start();
    
    0 讨论(0)
  • 2021-01-04 04:23

    I did some different trick here. Hope this will help you.

    if (myCountDownTimer != null) {
                myCountDownTimer.cancel();
            }
            myCountDownTimer = new MyCountDownTimer(10000, 500);
            myCountDownTimer.start();
    
    0 讨论(0)
  • 2021-01-04 04:23

    Just call again the start() method:

    CountDownTimer cdt = new CountDownTimer(30000, 1000) {
    
        public void onTick(long millisUntilFinished) {
            mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
        }
    
        public void onFinish() {
            this.start(); //start again the CountDownTimer
        }
    };
    
    0 讨论(0)
  • 2021-01-04 04:26

    You can realize it by cancelling and restarting. The following example should work.

    CountDownTimer mCountDownTimer = new CountDownTimer(500, 1000) {
    
        @Override
        public void onTick(long millisUntilFinished) {}
    
        @Override
        public void onFinish() {
            isCounterRunning = false;
        }
    };
    
    
    boolean isCounterRunning  = false;
    
    private void yourOperation() {
        if( !isCounterRunning ){
            isCounterRunning = true;
            mCountDownTimer.start();
        }
        else{
            mCountDownTimer.cancel(); // cancel
            mCountDownTimer.start();  // then restart
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题