У меня есть основной класс под названием «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()
CountDownTimer
создает здесь утечку памяти. - person MaciejGórski   schedule 16.09.2013