2016-01-21 124 views
2

我正在制作的程序包括两个不同的倒计时。android COuntDownTimer停止并开始新的

首先,用户必须在时间限制内输入密码并按下按钮。如果用户在时间限制之前无法输入密码,则结束。但是,如果用户能够在时间限制之前正确输入密码,则应启动新的计时器。

public class MalibuCountDownTimer extends CountDownTimer 
{ 
    public MalibuCountDownTimer(long startTime, long interval) 
    { 
     super(startTime, interval); 
    } 
    @Override 
    public void onFinish() 
    { 
     if(hasPlanted == false) { 
      text.setText("Time's up!"); 
      mTextView.setText("cya"); 
      btnEnable(false); 
      startB.setEnabled(false); 
     } 
    } 
    @Override 
    public void onTick(long millisUntilFinished) 
    { 
     text.setText(""+String.format("%02d:%02d:%03d", 
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)), 
        TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)) 
        )); 
     } 
} 

这是第一个计时器,它工作得很好。但是,当用户输入正确的密码时,我无法停止该计时器。

我创建了另一类CountDownTimer,并且当用户在时间限制内输入正确的密码时,第二个计时器启动。我放了一个布尔值来阻止第一个计时器在结束时做任何事情,但我不知道如何完全停止该计数器。

+0

调用取消方法 – LingYFH

+0

添加countdowntimer.cancel启动现有countdowntimer并创建一个新的。 – User

回答

1

首先,你必须创建服务,并调用主类服务,而计时器正在运行,并调用的onReceive方法

BroadcastReceiver br = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //Here you check the timer is running or not 
       timer.cancel(); 
} 
    }; 
2
if(myTimer != null) { 
     myTimer.cancel(); 
     myTimer = null; 
    } 

这是为了尽早取消定时器。首先检查它是否为空,如果不是,则在其上应用取消方法。让我知道这是否有帮助。

:)