処理の状態

処理の過程で、一連の State の変更が発生します。

1 回限りの処理の状態

one-time の WorkRequest の場合、処理は ENQUEUED 状態から開始します。

ENQUEUED 状態では、Constraints と初期遅延のタイミングの要件が満たされ次第、処理が実行可能になります。そこから RUNNING 状態に遷移し、処理の結果に応じて、SUCCEEDEDFAILED に遷移するか、結果が retry の場合は ENQUEUED に戻ります。プロセスのどの時点でも処理をキャンセルできます。キャンセルした時点で、処理は CANCELLED 状態に遷移します。

図 1 は、1 回限りの処理のライフを示しています。図に示すように、イベントの結果によって処理が他の状態に遷移します。

図 1:1 回限りの処理の状態遷移図

SUCCEEDEDFAILEDCANCELLED はすべて、この処理の終了状態を表します。処理がこれらのいずれかの状態にある場合、WorkInfo.State.isFinished() は true を返します。

定期的な処理の状態

成功と失敗の状態は、1 回限りの、連結された処理にのみ適用されます。定期的な処理の場合、終了状態は CANCELLED の 1 つだけです。これは、定期的な処理が終了することはないためです。処理の結果に関係なく、毎回実行後に処理のスケジュールが再設定されます。図 2 は、定期的な処理の簡略な状態遷移図を示しています。

図 2. 定期的な処理の状態遷移図。

ブロック状態

最後に、最終状態の一つである BLOCKED について説明します。この状態は、一連の処理、つまり処理チェーンにまとめられた処理に適用されます。処理チェーンとその状態遷移図については、処理の連結をご覧ください。

次の手順

処理の管理では、処理の進行状況を管理およびモニタリングする方法について詳しく学習します。