开发者

How to modify a java timer interval after scheduling it for a fixed rate in android? [duplicate]

开发者 https://www.devze.com 2023-04-08 23:29 出处:网络
This question already has answers here: Pausing/stopping and starting/resuming Java TimerTask continu开发者_JAVA技巧ously?
This question already has answers here: Pausing/stopping and starting/resuming Java TimerTask continu开发者_JAVA技巧ously? (8 answers) Closed 7 years ago.

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?


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号