我正在使用JobScheduler,FirebaseJobDispatcher和JobService计划我的背景图像上传任务。没有互联网连接 如果我一次安排2个作业,则JobService不会被调用两次。
这是我使用JobDispatcher创建工作的地方
Job job = mJobDispatcher.newJobBuilder()
.setService(WMJobService.class)
.setTag(WMJobScheduler.Tags.ENTITY_PROFILE_IMAGE_UPLOAD)
.setRecurring(false)
.setLifetime(Lifetime.FOREVER)
.setTrigger(Trigger.NOW)
.setReplaceCurrent(false)
.setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setExtras(extras)
.build();
mJobDispatcher.mustSchedule(job);
这是myJobService类
public class WMJobService extends JobService {
@Override
public boolean onStartJob(JobParameters job) {
Log.i("Scheduler", "Starting job: " + job.toString());
String jobTag = WMUtility.getJobTag(job.getTag());
switch (jobTag) {
case WMJobScheduler.Tags.ENTITY_PROFILE_IMAGE_UPLOAD:
new EntityProfileImageUploadJob(getApplicationContext()).execute(job.getExtras(),
jobTag, new JobStatusListener() {
@Override
public void onSuccess() {
jobFinished(job, false);
}
@Override
public void onFailure() {
jobFinished(job, true);
}
});
break;
}
@Override
public boolean onStopJob(JobParameters job) {
return true;
}
}