毎日決まった時間にJobSchedulerを起動し、3時間後に終了させたい。
ジョブを 20 分ごとに 3 時間トリガーする部分がありますが、JobInfo.Builder クラスには、正確な時間にジョブを開始するオプションがありません。
JobInfo.Builderクラスの概要を調べてみると、JobScheduler を開始する時間を設定するものは何もありません。
明らかに、私はそれを一日中実行したくなく、時間が一致することを確認します。これは必要以上にバッテリーを消耗し、悪いプログラミングです。
指定した時間に実行するアラームを作成して、このジョブをトリガーすることを考えていましたが、これは少しやり過ぎのようです。
JobInfo.Builder builder = new JobInfo.Builder(NIGHT_SYNC_JOB_ID,
new ComponentName(context, NightSyncDataJobService.class));
//Job starts at 11pm, and ends at 2am. Running every 20 minutes.
builder.setPersisted(true); //Job scheduled to work after reboot
builder.setPeriodic(Consts.ONE_MINUTE * 20);
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
この JobScheduler をトリガーする AlarmManger 以外に、この問題に対する他の解決策がある場合は、大歓迎です。