Android Countdown Timer Thread.sleep();

时间:2014-10-12 16:48:02

标签: java android timer countdowntimer thread-sleep

我正在尝试使用倒数计时器创建一个电路计时器。当线程处于休眠状态时,我希望文本显示“更改!”并且这将在倒数计时器再次启动之前显示5秒钟。我不确定如何使这个工作。我知道线程正在睡眠,因此不会显示“更改!”直到它在5秒后再次醒来。但我无法理解如何让它以我希望的方式运作。任何人都可以帮我解决这个问题吗?

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

1 个答案:

答案 0 :(得分:0)

不是让主线程休眠(你可能会得到一个ANR对话框),你可以使用一个可以通知你5秒失效的计时器,你可以再次安排你的CountDownTimer。

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

}