android COuntDownTimer 停止并开始新的
android COuntDownTimer stop and start new one
我正在制作的程序包括两个不同的倒计时。
首先,用户必须在限定时间内输入密码并按下按钮。如果用户不能在时间限制之前输入密码,那么它就结束了。但是,如果用户能够在时间限制之前正确输入密码,则应该启动一个新的计时器。
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))
));
}
}
这是第一个计时器,它工作得很好。但是,当用户输入正确的密码时,我无法尝试停止此计时器。
我创建了另一个 class 的 CountDownTimer,当用户在时限内输入正确的密码时,第二个计时器开始。我放了一个布尔值来停止第一个计时器在它结束时做任何事情,但我不知道如何才能完全停止那个计数器。
if(myTimer != null) {
myTimer.cancel();
myTimer = null;
}
这是为了提前取消定时器。首先检查它是否为空,如果不是,则对其应用取消方法。让我知道这是否有帮助。
:)
首先,您必须创建服务并在主 class 中调用该服务,其中计时器为 运行 并调用 onReceive 方法
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//Here you check the timer is running or not
timer.cancel();
}
};
我正在制作的程序包括两个不同的倒计时。
首先,用户必须在限定时间内输入密码并按下按钮。如果用户不能在时间限制之前输入密码,那么它就结束了。但是,如果用户能够在时间限制之前正确输入密码,则应该启动一个新的计时器。
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))
));
}
}
这是第一个计时器,它工作得很好。但是,当用户输入正确的密码时,我无法尝试停止此计时器。
我创建了另一个 class 的 CountDownTimer,当用户在时限内输入正确的密码时,第二个计时器开始。我放了一个布尔值来停止第一个计时器在它结束时做任何事情,但我不知道如何才能完全停止那个计数器。
if(myTimer != null) {
myTimer.cancel();
myTimer = null;
}
这是为了提前取消定时器。首先检查它是否为空,如果不是,则对其应用取消方法。让我知道这是否有帮助。
:)
首先,您必须创建服务并在主 class 中调用该服务,其中计时器为 运行 并调用 onReceive 方法
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//Here you check the timer is running or not
timer.cancel();
}
};