0

我想在一定时间后将数据同步到服务器,这个时间可配置为 30 分钟到 8 小时。

我正在使用JobScheduler来实现上述目标。

有什么方法可以更新JobInfo关联的JobScheduler吗?

这样我就可以将setPeriodic(intervalMillis)方法中设置的值更新为更新的时间间隔。

4

1 回答 1

0

请参阅下面的示例代码

    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;
}

}

记得在 Manifest 中添加你的服务

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

请注意,最小间隔为 15 分钟。尝试在调度作业时声明一个较小的周期,这将导致作业仍然是周期性的,但将在此有效周期内运行。

于 2018-11-27T04:18:53.407 回答