简体   繁体   中英

Android Countdown Timer Thread.sleep();

I am trying to create a circuit timer using the countdown timer. When the thread is sleeping I want the text to display "Change!" and this to display for 5 seconds before the countdown timer starts again. I am unsure how to get this working. I know the thread is sleeping and so wont display the "Change!" until after it has woke up again after the 5 seconds. But I cannot understand how to get it working the way I wish it to. Can anyone help me solve this issue?

public void onFinish()
{
    // Text to be displayed when thread is sleeping
    time.setText("Change!");
    try
    {
        Thread.sleep(5000);
    }
    catch (InterruptedException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if (numberOfCircuits != 15)
    {
        start();
        numberOfCircuits++;
    }
    else
    {
        countDownTimer.cancel();
    }
}

Instead of making the main thread sleep(you are likely to get an ANR dialog), you can use a Timer which can notify you of your 5sec lapse and you can schedule your CountDownTimer again.

public void onFinish()
{
  // Text to be displayed when thread is sleeping
  time.setText("Change!");

  new Timer("Sleeper").schedule(new TimerTask() {

    @Override
    public void run() {
      if (numberOfCircuits != 15)
      {
        start();
        numberOfCircuits++;
      }
      else
      {
        countDownTimer.cancel();
      }
    }

  }, 5000); // 5 sec delay

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM