我正在尝试使用倒数计时器创建一个电路计时器。当线程处于休眠状态时,我希望文本显示“更改!”并且这将在倒数计时器再次启动之前显示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();
}
}
答案 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
}