I have a service which has one Timer. I call timer.scheduleAtFixedRate()
in the onStart()
callback method. But I have to alter the timer interval depending on the value of a variable. I found no function for timer to alter its interval. So I thought to cancel the timer and re-schedule when that condition is met. But I am checking the condition with in the timerTask itself. So when I tried to cancel the timer in the TimerTask, it throws IllegalStateException
. Can anybody give me some solution?
Asked
Active
Viewed 5,604 times
2

Surjya Narayana Padhi
- 7,741
- 25
- 81
- 130
2 Answers
0
Netiher Timer.cancel()
nor TimerTask.cancel()
throws IllegalStateException
. That is thrown when you try to schedule a task on a cancelled Timer.
Solution: don't cancel the Timer
; cancel the TimerTask
.

user207421
- 305,947
- 44
- 307
- 483
0
A timer can only be scheduled once. If IllegalStateException isn't happening when you call cancel(), but when you try to reschedule the timer, just reinstantiate the timer and then schedule it. Otherwise, I'm not sure.

Jon Willis
- 6,993
- 4
- 43
- 51
-
A `Timer` isn't scheduled at all, let alone rescheduled, but a `TimerTask` can be rescheduled as often as you like. This seems to be just guesswork. – user207421 Jul 20 '15 at 10:07