Ich bemerkte, dass mein geplanter JobScheduler den Job viel zu oft ausführt. Ich habe es so eingestellt, dass es täglich ausgeführt wird und es erfordert, dass es im Leerlauf ist, auf Wlan steht und geladen wird, aber wenn diese Bedingungen erfüllt sind, wird der Job wie alle 10 Minuten oder noch häufiger ausgeführt.Android JobScheduler läuft viel zu oft bei Verwendung von setPeriodic()
Mein Code:
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");
Der Auftrag führt einen Hintergrund-Thread-Daten aus dem Internet herunterladen, und nach dem Herunterladen von Daten rufen getan wird Ich
mService.jobFinished(mParams, true);
den Job Scheduler zu benachrichtigen, dass die Job ist fertig und sollte es neu planen. Wie kommt es, dass der Job so oft ausgeführt wird, selbst wenn der Zeitraum auf einen Tag festgelegt ist? Mein Android 6.0.1-Gerät geht fast nie in den Doze-Modus, weil der Job so oft läuft.
Oh, das erklärt die Probleme, die ich hatte. Scheint so, als hätte ich die Dokumentation falsch verstanden. Vielen Dank! – qwertz