使用Timer时出现错误java.lang.IllegalStateException: TimerTask is scheduled already
代码:
private TimerTask mTimerTask = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
stop();
if (mTalkUIEvent != null) {
mTalkUIEvent.onTtsSpeakError("res_play_timeout", null);
}
}
};
private void startTimer() {
cancelTimer();
mTimeoutTimer = new Timer();
mTimeoutTimer.schedule(mTimerTask, 3500);
}
private void cancelTimer() {
if (mTimeoutTimer != null) {
mTimeoutTimer.cancel();
mTimeoutTimer = null;
}
}
在第二次调用startTimer时就会报错java.lang.IllegalStateException: TimerTask is scheduled already
解决办法:
每次都 new TimerTask
private void startTimer() {
cancelTimer();
mTimeoutTimer = new Timer();
mTimeoutTimer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
}
}, 3500);
}
问题解决。