根本无法运行countdowntimer

时间:2018-06-26 18:41:40

标签: android countdowntimer timedelay postdelayed

我的倒数计时器有问题。我尝试了本网站上的一些解决方案和文章,但它们对我没有用。所以,请阅读我的代码...

我也用过

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();

每次都出去。

我尝试了所有没有任何延迟功能的代码,并且它们运行正确。

请问我怎么了...

3 个答案:

答案 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. 创建CountDownTimer
    1. CountDownTimer被取消。
    1. onTick反复呼叫49次(50000/1000 = 50-1)。
    1. onFinish被称为

因此,将算法更改为以下内容:

  

输入一些代码1
  delay1
  ->延迟结束后,执行其他代码2。然后做delay2

您需要调用CountDownTimer.onFinish()

中的下一个代码