Как остановить CountDownTimer после закрытия активности? - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь закодировать приложение с помощью 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);

}
...