JobScheduler - Обновление информации о работе после создания работы - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу синхронизировать данные с сервером через определенное время, и это время настраивается в диапазоне от 30 минут до 8 часов.

Я использую JobScheduler для достижения выше.

Есть ли способ, с помощью которого я могу обновить JobInfo, связанный с JobScheduler?

, чтобы я мог обновить значение, установленное в методе setPeriodic(intervalMillis), до обновленного интервала времени.

1 Ответ

0 голосов
/ 27 ноября 2018

См. Мой пример кода ниже

    int PERIODIC_SYNC_JOB_ID = 0;
    long interval  = 1000 * 60 * 20;
    JobInfo.Builder builder = new JobInfo.Builder(PERIODIC_SYNC_JOB_ID,
            new ComponentName(getApplicationContext(), SampleJobService.class));
    JobInfo jobInfo = builder.setPeriodic(interval).build();

    JobScheduler jobScheduler = (JobScheduler) getApplicationContext().getSystemService(Context.JOB_SCHEDULER_SERVICE);
    jobScheduler.schedule(jobInfo);

    Log.d("JobScheduler", "Sample job is scheduled every " + interval + " ms");

SampleJobService.java

public class SampleJobService extends JobService {
@Override
public boolean onStartJob(JobParameters jobParameters) {
    Log.d("SampleJobService", "onStartJob()");

    // do something in another thread/handler/AsyncTask

    jobFinished(jobParameters, false);
    Log.d("SampleJobService", "Sample job is rescheduled");
    return true;
}

@Override
public boolean onStopJob(JobParameters jobParameters) {
    Log.d("SampleJobService", "onStopJob()");
    return false;
}

}

Не забудьте добавить свой сервис в манифест

        <service
        android:name=".SampleJobService"
        android:permission="android.permission.BIND_JOB_SERVICE" />

Обратите внимание, что минимальный интервал составляет 15 минут.Попытка объявить меньший период, который это при планировании задания, приведет к заданию, которое все еще является периодическим, но будет выполняться с этим эффективным периодом.

...