倒数计时器不会停止 [Android]

Countdown timer doesn't stop [Android]

这是我第一次来这里,我需要你的帮助。 我的 activity 开始调用此方法,并且有一个按钮应该重新启动计时器。该按钮包含相同的方法,但不会重新启动。方法代码最后有 timer.cancel 但它没有完成工作,计时器保持 运行 而我无法得到它。我真的需要帮助。

public final void starTimer() {

        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        String num = extras.getString("seg");
        timerr = new CountDownTimer((Integer.parseInt(num)) * 1000 + 1000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                long millis = millisUntilFinished / 1000;
                if (millis<10){
                    txtTempo.setText("0"+ (millisUntilFinished / 1000)) ;
                } else {
                    txtTempo.setText("" + (millisUntilFinished / 1000));
                }            
            }
            @Override
            public void onFinish() {
                txtTempo.setText("00");
               }
             });

           }
         };
        timerr.cancel();
        timerr.start();
    }

在Activity/Fragment.

中调用timerr.cancel() onDestroy()/onDestroyView()

或调用单独的方法

timerr = new CountDownTimer((Integer.parseInt(num)) * 1000 + 1000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
        long millis = millisUntilFinished / 1000;
        if (millis<10){
            txtTempo.setText("0"+ (millisUntilFinished / 1000)) ;
        } else {
            txtTempo.setText("" + (millisUntilFinished / 1000));
        }            
    }
    @Override
    public void onFinish() {
        txtTempo.setText("00");
       }
     });

   }
 };

 timerr.start();
 }

只要你想取消定时器就使用方法

取消定时器();

  void cancelTimer() {
   if(timerr!=null)
    timerr.cancel();
  }

试试这个

    public final void starTimer() {

        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        String num = extras.getString("seg");
        if(timerr!=null){
          timerr.cancel();
          timerr=null;
        }
        timerr = new CountDownTimer((Integer.parseInt(num)) * 1000 + 1000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                long millis = millisUntilFinished / 1000;
                if (millis<10){
                    txtTempo.setText("0"+ (millisUntilFinished / 1000)) ;
                } else {
                    txtTempo.setText("" + (millisUntilFinished / 1000));
                }            
            }
            @Override
            public void onFinish() {
                txtTempo.setText("00");
               }
             });

           }
         };

        timerr.start();
    }