タイマーを再スケジュールするにはどうすればよいですか。タイマー/タイマータスクをキャンセルし、メソッドを使用して再度スケジュールしようとしました。しかし、例外エラーが表示されます:
例外エラーjava.lang.IllegalStateException: TimerTask はすでにスケジュールされています
私が使用したコード:
プライベートタイマー timer = new Timer("alertTimer",true); パブリック void reScheduleTimer(int 期間) { タイマーをキャンセルします。 timer.schedule(timerTask, 1000L, 期間 * 1000L); }
ベストアンサー1
Timer.cancel() のドキュメントを見ると、次のようになります。
「タイマーとすべてのスケジュールされたタスクをキャンセルします。現在実行中のタスクがある場合、そのタスクは影響を受けません。このタイマーにこれ以上のタスクをスケジュールすることはできません。後続の呼び出しは何も行いません。」
スケジュールを変更するときは、新しいタイマーを初期化する必要があります。
編集:
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
}
}