关闭活动后如何停止CountDownTimer?

时间:2018-12-01 16:46:58

标签: countdowntimer

我正在尝试使用CountdownTimer编写应用程序代码,时间结束后,名称将显示在Textview上,效果很好。但是我的问题是,当我回到主要活动时,计数器仍在运行,并且每次完成计数器时都会播放声音和振动。

我添加了一个新函数openMainactivity并设置了timer.cancel();    timer = null ;,但仍然不适用于我。 谢谢您的答复。

CountDownTimer代码:

  CountDownTimer timer= null;
public void startTimer () {


        timer= new CountDownTimer(timerZeit * 1000, 1000) {

            public void onTick(long millisUntilFinished) {
                updatetime((int) millisUntilFinished / 1000);
            }

            public void onFinish() {
                if (sound == 1) {
                    playSound();
                }
                if (vib == 1) {
                    startVib();
                }

                if(timer  != null){
                    timer.cancel();
                    reStart();

                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            startTimer();
                        }
                    }, 3000);


                }



            }
        };
        timer.start();

public void reStart (){

    Random randomGenerator = new Random();
    randomNumber = randomGenerator.nextInt(user);
    String item = arrayList.get(randomNumber);


    TextViewName.setText(item);
}

 public void playSound () {
    mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.airhorn);
    mediaPlayer.start();


}


public void startVib (){

   // Toast.makeText(getApplicationContext(),"test", Toast.LENGTH_LONG).show();
    vibrator= (Vibrator) getSystemService(VIBRATOR_SERVICE);
    vibrator.vibrate(VibrationEffect.createOneShot(2000,VibrationEffect.DEFAULT_AMPLITUDE));

}
 public void openMainActivity(){

   timer.cancel();
   timer=null;
    Intent intent = new Intent(this,MainActivity.class );
    startActivity(intent);

}

0 个答案:

没有答案