我想在一定时间后将数据同步到服务器,这个时间可配置为 30 分钟到 8 小时。
我正在使用JobScheduler
来实现上述目标。
有什么方法可以更新JobInfo
关联的JobScheduler
吗?
这样我就可以将setPeriodic(intervalMillis)
方法中设置的值更新为更新的时间间隔。
我想在一定时间后将数据同步到服务器,这个时间可配置为 30 分钟到 8 小时。
我正在使用JobScheduler
来实现上述目标。
有什么方法可以更新JobInfo
关联的JobScheduler
吗?
这样我就可以将setPeriodic(intervalMillis)
方法中设置的值更新为更新的时间间隔。
请参阅下面的示例代码
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 分钟。尝试在调度作业时声明一个较小的周期,这将导致作业仍然是周期性的,但将在此有效周期内运行。