Я планирую свои задачи по загрузке фонового изображения, используя 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;
}
}