5

我有一个名为“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 计时器设置为公共解决了我的问题,而在其他活动中我只是使用 MainActivity.timer.cancel()

4

3 回答 3

6

您可以使用:

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

因此,如果活动结束,倒数计时器将被取消。下次您打开活动时,新的倒计时将启动。

于 2013-09-15T18:14:27.987 回答
2

除了timer.cancel()(应该有效)之外,您还可以在计时器中执行以下操作onFinish()

@Override
    public void onFinish() {
        if(!MainActivity.this.isFinishing()) {
             // Start new activity...
        }
    }
于 2013-09-15T18:15:16.773 回答
0

我想我通过设置CountDownTimer timer为 apublic和在我刚刚使用的其他活动中解决了我的问题MainActivity.timer.cancel()

于 2013-09-15T18:48:05.253 回答