Reschedule timer in android Reschedule timer in android android android

Reschedule timer in android


If you see the documentation on Timer.cancel() you'll see this:

"Cancels the Timer and all scheduled tasks. If there is a currently running task it is not affected. No more tasks may be scheduled on this Timer. Subsequent calls do nothing."

You'll need to initialize a new Timer when you are rescheduling:

EDIT:

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  }}


In fact, if you look in the cancel method javadoc, you can see the following thing :

Does not interfere with a currently executing task (if it exists).

That tells the timer "ok, no more tasks now, but you can finish the one you're doing". I think you'll also need to cancel the TimerTask.


@Eric Nordvik answer is running fine.

One thing we can do is to cancel previous timer events execution

public void reScheduleTimer(int duration) {    // Cancel previous timer first    timer.cancel();    timer = new Timer("alertTimer",true);    timerTask = new MyTimerTask();    timer.schedule(timerTask, 1000L, duration * 1000L);}