ここでは,WorkManager,デーモンWorkおよび非デーモンWorkのライフサイクルについて説明します。
WorkManagerは,アプリケーション開始時に作成されます。アプリケーション中でルックアップされると,アプリケーション開始時に作成されたWorkManagerが返されます。複数回ルックアップされても,アプリケーション開始時に作成された同じWorkManagerが呼び出されます。WorkManagerは,アプリケーションの停止時に破棄されます。
また,WorkManagerは永続化されません。そのため,JavaVMが終了した場合,作成されたWorkManagerおよびスケジュールされた非同期処理は破棄されます。
WorkManagerのライフサイクルを次の図に示します。
図10-7 WorkManagerのライフサイクル
デーモンWorkは,scheduleメソッドの実行時に作成されます。また,WorkManagerの停止時(WorkManagerに対応するアプリケーションの停止時)に破棄されます。WorkManagerの停止時には,WorkManagerはデーモンWorkのreleaseメソッドを実行したあと,すべてのデーモンWorkが終了するまで待機します。
デーモンWorkのライフサイクルを次の図に示します。
図10-8 デーモンWorkのライフサイクル
非デーモンWorkは,scheduleメソッドの実行時に作成されます。また,runメソッドの処理が完了すると終了します。非デーモンWorkの実行中の場合またはキューで実行待ちの場合にWorkManagerを停止したとき(対応するアプリケーションを停止したとき),非デーモンWorkが停止するまで待機してから終了します。
非デーモンWorkのライフサイクルを次の図に示します。
図10-9 非デーモンWorkのライフサイクル