JobScheduler вызывает onStartJob()
несколько раз, хотя задание завершено. Все работает нормально, если я планирую одно задание и жду, пока оно не закончится. Однако, если я планирую два или более задания с разными идентификаторами одновременно, то onStartJob()
вызывается снова после вызова jobFinished()
.
Например, я планирую задание 1 и задание 2 с точно такими же параметрами, кроме ID, тогда порядок:
-
onStartJob()
для задания 1 и задания 2 - Оба задания завершаются, поэтому для них
jobFinished()
вызывается - После этого
onStartJob()
снова вызывается для обоих заданий с тем же идентификатором
Моя работа очень простая и не сложная.
public class MyJobService extends JobService {
@Override
public boolean onStartJob(final JobParameters params) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// do something
} finally {
// do not reschedule
jobFinished(params, false);
}
}
}).start();
// yes, job running in the background
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
// mark my background task as stopped
// do not reschedule
return false;
}
}
Я планирую задания вроде этого
JobInfo jobInfo = createBaseBuilder(request)
.setMinimumLatency(2_000L)
.setOverrideDeadline(4_000L)
.setRequiresCharging(false)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.build();
int scheduleResult = mJobScheduler.schedule(jobInfo);
// is always success
Я не знаю, что случилось.