如何实现可以在Android中暂停的计时器? CountDownTimer适合这个任务吗?

时间:2012-01-05 15:21:26

标签: android

我想实现多个计时器(创建一个多秒表应用程序),而CountDownTimer似乎是显而易见的选择,但是我想提供暂停一个或所有秒表的功能。

CountDownTimer上提供的文档中我看不到一种明显的方法可以在倒计时开始后暂停倒计时,只是停止倒计时或者将其增加/减少一定量。

谢谢!

2 个答案:

答案 0 :(得分:1)

我对使用CountDownTimer知之甚少,但我知道当我必须制作一个计时器时,我使用内置的Java Timer类和TimerTask。如果你想让几个计时器倒计时并单独暂停它们你可以做这样的事情

task1 = new TimerTask() {
        public void run() {
                    time1--;
                    }
        };
task2 = new TimerTask() {
        public void run() {
                    time2--;
                    }
        };
        Timer1 = new Timer();
        Timer2 = new Timer();
        Timer1.scheduleAtFixedRate(task1,0,1000);
        Timer2.scheduleAtFixedRate(task2,0,1000);

@Override OnClickListener(stopButton1)
{
    Timer.Cancel();
}
@Override OnClickListener(startButton1)
{
    Timer1 = new Timer();
    Timer1.scheduleAtFixedRate(task1,0,1000);
}

这不是确切的语法,但我认为它传达了这个想法。只是抬头但是如果你走这条路线你就无法正常更新那个任务中的UI,就像这样。

Activity_name.this.runOnUiThread(new Runnable() {
    public void run() {
      text.setText("Level " + Integer.toString(level)+ " will start in " +Integer.toString(time) + " seceonds." );
    }
});

您将放入任务的“运行”部分。这与确切的问题没有关系,但是我在更新UI部分时被困了几天,直到有人在这里帮助我。

答案 1 :(得分:1)

我开始使用CountDownTimer(但已切换为RunnableHandler.postDelayed)。

在计时器滴答声中,我减少了一个计数器。暂停,我取消了计时器。要恢复,我使用保存的计数器值创建了一个 new 计时器。它看起来有点笨拙,但它似乎是唯一的选择。

(我不记得为什么我做了转换,不幸的是。当时有理由的IIRC,但我不知道这是CountDownTimer的限制,还是我的特殊需求。)