计时器在Android中没有停止

Stu*_*ing 13 android

问题 我在android中开发时停止Timer有问题.

在停止计时器时,计时器已经为空.

然后我将定时器初始化移动到方法之外,就像TimerTask一样,它解决了null问题,但是在timer.cancel();调用它时仍然没有取消.

下面的代码是计时器在停止录制时已经为空的示例.

的TimerTask

TimerTask在课堂内初始化,但在方法和下面的代码之外......

private TimerTask task = new TimerTask() {
    @Override
    public void run() {
      Log.e("TRACK_RECORDING_SERVICE","Timer Running");
    }
  };
Run Code Online (Sandbox Code Playgroud)

定时器和定时器启动

然后我有一个startRecroding方法,当我想启动计时器时调用它...

public void startRecording(){
     timer = new Timer("Message Timer");
     timer.scheduleAtFixedRate(this.task, 0, 1000);
 }
Run Code Online (Sandbox Code Playgroud)

定时器停止

我想在停止计时器时调用下面的方法......

public void stopRecording() {
     if (timer != null) {
         timer.cancel();
         timer = null;
     } else {
         Log.e("TRACK_RECORDING_SERVICE","Timer already null.");
     }
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

Luc*_*fer 19

timer = new Timer("Message Timer"); 
Run Code Online (Sandbox Code Playgroud)

这里你的对象timer不是static这样timer.cancel();会取消Timer类的另一个实例.我建议你在类的顶部创建一个Timer Class的静态实例变量,如下所示,

private static Timer timer;
Run Code Online (Sandbox Code Playgroud)

  • 我创建了静态实例,然后它也不会停止 (5认同)