Если вы видите документацию по Timer.cancel (), вы увидите следующее:
"Отменяет таймер и все запланированные задачи. Если есть текущая запущенная задача, она не затрагивается. Больше задач нетможет быть запланировано на этом таймере. Последующие вызовы ничего не делают. "
Вам потребуется инициализировать новый таймер при изменении графика:
РЕДАКТИРОВАТЬ:
public void reScheduleTimer(int duration) {
timer = new Timer("alertTimer",true);
timerTask = new MyTimerTask();
timer.schedule(timerTask, 1000L, duration * 1000L);
}
private class MyTimerTask extends TimerTask {
@Override
public void run() {
// Do stuff
}
}