我的倒数计时器有问题。我尝试了本网站上的一些解决方案和文章,但它们对我没有用。所以,请阅读我的代码...
我也用过
handler.postDelayed(new Runnable() {
之前,这不是我的解决方案,但它只能正常工作。
主要问题是:
我想做以下事情:
(button pressed)
do some codes1
delay1
do other codes2
delay2
go back to *do some codes1* again.
简而言之,这是我的真实代码:
itimesec--;
setdelay();
irepeat--;
setrelax();
这是在我的函数中:
public void setrelax(){
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
itotalsnozee--;
TextToSpeechFunction(" "+itotalsnozee);
}
public void onFinish() {
itotalsnozee=fitotalsnozee;
isrelax=false;
TextToSpeechFunction("do again");
}
}.start();
yourCountDownTimer1.cancel();
}
我尝试使用一个插入值为50000的变量,但它还是没有用。
我试图将setrelax函数代码直接放入oncreate中,但从未成功。 它跳到了
}.start();
yourCountDownTimer1.cancel();
每次都出去。
我尝试了所有没有任何延迟功能的代码,并且它们运行正确。
请问我怎么了...
答案 0 :(得分:0)
我查看了您的代码,但没有发现任何大错误,但请尝试
代替
<FlipView
x:Name="flipView" Background="{StaticResource SystemControlAcrylicWindowBrush}"
......
使用
.start();
并删除yourCountTimer1.cancel(); 像这样:
yourCountDownTimer1.start();
希望有帮助。
答案 1 :(得分:0)
下面是在我们的代码中运行otp定时器的代码。您可以复制粘贴我已经提到过的注释,请遵循相同的内容。
operator>>
答案 2 :(得分:0)
您需要记住,使用CountDownTimer
时,代码不会按顺序执行,因为它是异步工作的(通过处理程序)。
让我们剖析您的代码。您的以下代码在这里:
public void setrelax(){
// 1. Creating CountDownTimer
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
// 2. onTick called
...
}
public void onFinish() {
// 3. onFinish called
...
}
}.start();
// 4. CountDownTimer is cancelled.
yourCountDownTimer1.cancel();
}
将按以下顺序运行:
因此,将算法更改为以下内容:
输入一些代码1
delay1
->延迟结束后,执行其他代码2。然后做delay2
您需要调用CountDownTimer.onFinish()