我不知道发生了什么错误......我无法在我的服务中启动计时器。遵循代码
public class BkgService extends Service{
private Timer ServUpdTimer = new Timer();
private static long TMR_INTERVAL = 10*60*1000;
public void onCreate() {
super.onCreate();
StartServUpdateTask();
}
private void StartServUpdateTask() {
if(ServUpdTimer != null)
ServUpdTimer.cancel();
ServUpdTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
}
}, 0, TMR_INTERVAL);
}
}
但是当我到达ServUpdTimer.scheduleAtFixedRate()
行时,我收到以下异常
03-03 23:32:14.851:E / AndroidRuntime(6083): java.lang.RuntimeException:无法启动服务 mt.android.app.BkgService@40544838 with Intent { cmp = mt.android.app / .BkgService}:java.lang.IllegalStateException: 计时器被取消
如果有人能对此有所了解,我将非常感激......
答案 0 :(得分:14)
来自Timer.cancel()
的Javadoc:
一旦计时器终止,其执行线程将正常终止,并且不再安排任何任务。
来自Timer.scheduleAtFixedRate()
的Javadoc:
抛出:IllegalStateException - 如果任务已经被调度或取消,计时器被取消,或计时器线程被终止。
Timer
会立即取消:您需要创建一个新实例:
private void StartServUpdateTask() {
if(ServUpdTimer != null)
{
ServUpdTimer.cancel();
}
ServUpdTimer = new Timer();
...
}