Ho notato che il mio JobScheduler pianificato esegue il lavoro troppo spesso. L'ho impostato per l'esecuzione quotidiana e richiede di essere inattivo, di essere su wlan e di essere in carica, ma quando si verificano tali condizioni il lavoro viene eseguito come ogni 10 minuti o anche più frequentemente.JobScheduler Android eseguito troppo spesso quando si utilizza setPeriodic()
Il mio codice:
JobInfo.Builder builder = new JobInfo.Builder(1,
new ComponentName(context.getPackageName(), SyncJobService.class.getName()));
builder.setPeriodic(TimeUnit.DAYS.toMillis(1))
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setRequiresCharging(true)
.setRequiresDeviceIdle(true);
int code = jobScheduler.schedule(builder.build());
if (code <= 0) {
Log.e(TAG, "Could not scheduled job: " + code);
return;
}
Log.e(TAG, "Scheduled job");
Il lavoro viene eseguito un thread in background per scaricare dati da Internet, e dopo il download dei dati avviene chiamo
mService.jobFinished(mParams, true);
per notificare al job scheduler che la il lavoro è fatto e dovrebbe ripianificarlo. Come mai il lavoro viene eseguito così spesso anche quando il periodo è impostato su un giorno? Il mio dispositivo Android 6.0.1 non entra quasi mai in modalità doze perché il lavoro viene eseguito così spesso.
Oh, questo spiega i problemi che stavo avendo. Sembra che abbia frainteso la documentazione. Grazie! – qwertz