web-dev-qa-db-ja.com

Android JobScheduler:定期的な時間で同じジョブをスケジュールする場合、それは期間を再開しますか?

同じ定期ジョブ(同じジョブID)をスケジュールし、そのジョブがすでにスケジュールされている場合はどうなりますか?それは最初から期間を再開しますか?

たとえば、このメソッドを2回呼び出します。

JobInfo myLongJob = new JobInfo.Builder(
            JOB_ID,
            new ComponentName(context, JobSchedulerLongService.class.getName())
    ).setPeriodic(10000)
     .build();

    jobScheduler.schedule(myLongJob);

ジョブを2回目にスケジュールすると、定期タイマーが再びカウントを開始しますか?

19
Juan Saravia

私はいくつかのテストをした後にそれを見つけました:

2回目にジョブをスケジュールすると、定期タイマーが再びカウントを開始しますか?

はい!そして...

それは以下に依存します:

  • ジョブが実行されている場合:最初のジョブが停止し(onStopJobメソッドを呼び出し)、再び開始します。
  • ジョブが実行されていない場合:カウントダウンを再開します。

@ Gauthierから本当に役立つコメントが追加されました:

jobId-int:このジョブのアプリケーション提供のID。以降のキャンセルの呼び出し、または同じjobIdで作成されたジョブは、既存のジョブを同じIDで更新します。 [このドキュメントへのリンク]( http://developer.Android.com/reference/Android/app/job/JobInfo.Builder.html#JobInfo.Builder(int 、Android.content.ComponentName) )

16
Juancho