如何处理CountDownTimer

时间:2013-09-15 18:11:19

标签: android countdowntimer

我有一个名为“MainActivity”的主类,我在我的应用程序中几次使用它。

private static CountDownTimer timer;
private static final long startTime = 15 * 1000;
private static final long interval = 1 * 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    timer = new StageCountDownTimer(startTime, interval);

}

private class StageCountDownTimer extends CountDownTimer {
    public StageCountDownTimer(long startTime, long interval) {
        super(startTime, interval);
    }

    @Override
    public void onFinish() {
        //STARTTING NEW ACTIVITY 
    }

    @Override
    public void onTick(long millisUntilFinished) {
    }
}

有时用户需要在倒计时结束前关闭此活动,然后再次返回此活动。然后新的倒计时正在启动,但旧的倒计时在前一个倒计时结束时执行onFinish()中的代码。当我启动此代码一次时,一切都很好。退出活动后如何取消/处理/销毁此计时器?我试过timer.cancel()但没有任何事情发生。

修改

我认为我通过将CountDownTimer计时器设置为公共而解决了我的问题,而在其他Activity中我只使用了MainActivity.timer.cancel()

3 个答案:

答案 0 :(得分:3)

您可以使用:

if (isFinishing()) {
    CountDownTimer.cancel();
}

所以如果活动结束,倒计时器就会被取消。下次打开活动时,新的倒数计时器将会启动。

答案 1 :(得分:1)

除了timer.cancel()(应该有效),您还可以使用计时器onFinish()

@Override
    public void onFinish() {
        if(!MainActivity.this.isFinishing()) {
             // Start new activity...
        }
    }

答案 2 :(得分:0)

我认为我通过将CountDownTimer timer设置为public解决了我的问题,而在其他活动中我只是使用MainActivity.timer.cancel()