正しい方法でやっているようです。これにより、Javaドキュメントを読むことができました.
タスクの実行で例外が発生した場合、後続の実行は抑制されます。
ScheduledExecutorService.scheduleWithFixedDelay()
ランナブルのコードが例外を生成し、Scheduled Executor が実行を終了する可能性はありますか? きっとあなたはそれについて言及したでしょうか?
しかし、私が言ったように、Scheduled Executor は後続のタスクの実行が抑制されないように例外を処理すると思っていたので、これを読んで驚くべきことがわかりました。そして、これが従来のTimerの代わりに好まれる主な理由の 1 つです。しかし今、私はどうやら間違っていると思っていたことをjavadocで見ています...
私は Android プラットフォームにあまり詳しくありませんが、Oracle の JVM と Android の Dalvik の間で java.util.concurrent 機能に違いがある可能性があるため、Oracle の JVM javadocs を考慮することは、結局のところ良い考えではないかもしれません。
編集:実際、ファクトリ メソッドの javadoc は次のように述べています。
(ただし、シャットダウン前の実行中に障害が発生したためにこの単一のスレッドが終了した場合、後続のタスクを実行するために必要に応じて新しいスレッドが代わりに使用されることに注意してください。)
Executors.newSingleThreadScheduledExecutor()
EDIT2: Oracle と Dalvik の Java ドキュメントは実質的に区別がつかないようです。