我有一个名为“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()
答案 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()