Android JobScheduler funktioniert immer für 1 Minute

8

Ich versuche, den Hintergrunderfrischungsdienst mit dem neuen JobScheduler (compat by tatarka) zu implementieren. Hier ist mein Service

%Vor%

Hier ist meine Jobinfo

%Vor%

Im Protokoll sehe ich, dass mein Job immer für 1 Minute funktioniert 12-31 12:38:03.884 10059-10059/@/RefreshJobService﹕ on stop job: 0 12-31 12:39:03.891 10059-10059/@/RefreshJobService﹕ on start job: 0 12-31 12:40:03.911 10059-10059/@/RefreshJobService﹕ on stop job: 0 12-31 12:42:08.841 10059-10059/@/RefreshJobService﹕ on start job: 0 12-31 12:43:08.858 10059-10059/@/RefreshJobService﹕ on stop job: 0

Also warum? Ich bin regelmäßig auf 2000ms eingestellt, jeder Wert hat keinen Einfluss auf 1 Minute Intervall für den Job. Warum?

    
onCreate 31.12.2014, 09:45
quelle

5 Antworten

6

Bis Android 5.1.1 gab es für einen einzelnen Job eine Zeitüberschreitung von 60 Sekunden. Ab Android 6 beträgt das Timeout jetzt 10 Minuten.

    
greywolf82 15.03.2016 07:29
quelle
6

onStopJob wird aufgerufen, wenn das System den Auftrag abbrechen möchte. Der Grund dafür, dass du deinen Job annullierst, ist, dass er denkt, dass er noch läuft. Sie müssen jobFinished(params, bool) an einem bestimmten Punkt in Ihrem Job aufrufen, um dem Scheduler mitzuteilen, dass es abgeschlossen ist. Andernfalls wird Timeout ausgegeben und onStopJob aufgerufen, um den Vorgang abzubrechen. Darüber hinaus informiert das Zurückgeben von "True" von onStartJob dem System, dass die Verarbeitung noch nicht abgeschlossen ist. Sie sollten 'false' zurückgeben, wenn Sie noch zusätzliche Arbeit leisten, z. die Arbeit an einen separaten Thread übergeben.

%Vor%     
Tom 01.06.2016 20:58
quelle
3

Es hört sich so an, als würden Sie fragen, warum Sie onStopJob genau eine Minute nach dem Start Ihres Jobs erhalten. Dieses Zeitlimit von 1 Minute ist im Code hier

    
43matthew 19.07.2015 02:58
quelle
2

Ab API 26 (Oreo) wird mindestens 15 Minuten für periodische Jobs kürzer als 15 Minuten ausgeführt.

    
Imran Haidry 24.11.2017 12:04
quelle
0

43matthew ist richtig, aber ich möchte etwas mehr dazu hinzufügen. Die 2000 ms, über die Sie sprechen, sind die periodischen Intervalle, nach denen der Job erneut gestartet wird, d. H. führt diesen Job alle 2000 ms aus , nicht das Intervall, für das der Job ausgeführt wird.

    
gaurav jain 02.02.2016 07:24
quelle

Tags und Links