JobScheduler – Coding in Flow
AndroidのOreo以降、アイドルアプリはバックグラウンドサービスを実行し続けることができなくなりました。 このビデオでは、JobService を継承したクラスを作成し、JOB_SCHEDULER_SERVICE でスケジューリングすることにより、そのような JobScheduler を設定します。
JobService クラスでは、onStartJob と onStopJob をオーバーライドします。 onStartJobでは、いくつかの長く実行される(偽の)操作を行うためにバックグラウンドスレッドを開始します。 onStopJobでは、ジョブの基準が満たされなくなった時にシステムがウェイクロックを解放するので、作業をキャンセルします(例えば、アンメタードネットワークを必要とし、ユーザーがWiFiを無効にした場合など)。 この場合、後で再試行するためにタスクを再スケジュールします。
ジョブをスケジュールするとき、JobScheduler に JobInfo オブジェクトを渡し、どのような状況でジョブを実行させるか定義します。 ここでは、setRequiresDeviceCharging、setRequiredNetworkType、setPeriodic などの基準を設定することができます。
最後に、マニフェストに android.permission.BIND_JOB_SERVICE 許可でジョブ サービスを登録し、アプリが実行されていなくても、システムが適切な時刻にサービスを開始します。