在Android中暂停和恢复倒数计时器和进度条?

问题描述:

我想提出一个简单的应用程序,它使用倒计时定时器,循环 进度条和3个按钮开始,暂停和Resume.What我想 做的就是当一个特定的活动开始,我按下暂停存储 计时器暂停并从该点继续前进的时间 forward.But问题是倒计时timmer不停止,因此如果我在7秒暂停7秒进度条停止在7秒,但当我按 恢复它从倒数计时器的值在那个时刻开始。这是我试图实现的代码。在Android中暂停和恢复倒数计时器和进度条?

btnPause.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //When user request to pause the CountDownTimer 
       isPaused = true; 

       //Enable the resume and cancel button 
       btnResume.setEnabled(true); 
       //Disable the start and pause button 
       btnStart.setEnabled(false); 
       btnPause.setEnabled(false); 
      } 
     }); 



btnResume.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Disable the start and resume button 

     btnStart.setEnabled(false); 
     btnResume.setEnabled(false); 
     //Enable the pause and cancel button 
     btnPause.setEnabled(true); 

     //Specify the current state is not paused and canceled. 
     isPaused = false; 
     isCanceled = false; 
     mCountDownTimer.start(); 
} 
    }); 

这对于倒数计时器代码。

private void neck_rotations() 
    { 
     neckRotation = true; 
     mCountDownTimer = new CountDownTimer(NECK_ROTATION_TIME, 1000) 
     { 
      @Override 
      public void onTick(long millisUntilFinished) 
      { 

       if (isPaused || isCanceled) 
       { 
        paused_at = (int) (millisUntilFinished/1000); 

       } else 
       { 
        timeRemaining = (int) (millisUntilFinished/1000); 
        donutProgress.setMaxValue(NECK_ROTATION_TIME/1000); 
        donutProgress.setValueAnimated((int) timeRemaining); 
        counter.setText(String.valueOf(timeRemaining)); 

       } 

      } 

      @Override 
      public void onFinish() 
      { 
       response = "Jumps"; 
       rest(response); 

      } 
     }; 
     mCountDownTimer.start(); 
    } 

我是新手编程,所以任何帮助或建议表示赞赏。谢谢。

请参阅本:

How to clear CountDownTimer from onTick method?

我不知道你可以从仍然从内部onTick()方法倒计时关闭计时器。

为CountDownTimer创建一个gloabl引用,并仅从该引用上的clickListeners调用start()或cancel()。

+0

是的我已经倒计时器global.I使用相同的倒数计时器为3种不同的方法.neck_rotation(),hand_rotation()和跳转(),所以当用户点击开始第一个方法被调用和开每种方法完成后都有10秒的休息时间。 – AndroidNewBee

+0

就像我看到的那样,当您按btnResume时您正在创建一个新的CountDownTimer,并且您还将mCountDownTimer作为另一个CountDownTimer的引用。这是为什么 ?继续使用onClick()的mCountDownTimer。无论如何,不​​应该在onTick()函数中调用cancel()函数。 – Gil

+0

是的,你可以帮助吗?你可以举一个例子或什么? – AndroidNewBee