我正在尝试使用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);
}