Androidでタイマーを再スケジュールする 質問する

Androidでタイマーを再スケジュールする 質問する

タイマーを再スケジュールするにはどうすればよいですか。タイマー/タイマータスクをキャンセルし、メソッドを使用して再度スケジュールしようとしました。しかし、例外エラーが表示されます:

例外エラー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
  }
}

おすすめ記事