[ERLEDIGT] Probleme mit Service unter Android N

lordzwieback

lordzwieback

Erfahrenes Mitglied
210
Nabend,

ich spiele momentan ein bisschen mit einem XMLParser rum und das hat auch soweit ganz gut funktioniert. Ich kann zB den Link eines RSS - Feeds eingeben und er filtert mir dann die Titel der jeweiligen Einträge raus und zeigt sie an. Das ging bisher.

Bisher habe ich auch nur im Emulator getestet (Nexus 5X API23). Wollte es dann auch meinem Phone testen (API25). Die App läuft zwar an, aber ich bekomme keine Titel mehr angezeigt.

Bin dann hin und wollte nachschauen, ob der Klassenaufruf funktioniert und das XML eingelesen wird (passiert in einem AsyncTask). Habe also ein Log in den Konstruktor der Klasse gesetzt und siehe da, die Meldung erscheint nie.

Bin gerade ein wenig ratlos. Den Aufruf des Service hab ich folgendermaßen:
Code:
JobInfo rssJob = new JobInfo.Builder(1, new ComponentName(this, RSSService.class))
                .setPeriodic(10000)
                .build();

        JobScheduler scheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
        scheduler.schedule(rssJob);

Der AsyncTask befindet sich in der RSSService Klasse und wird beim onStartJob mit dem RSS-Link als Parameter initialisiert und abgeschickt.

Fehler bekomme ich keine angezeigt. Die App läuft einfach stur weiter.

Übersehe ich etwas Offensichtliches?! Wieso funktioniert das in Android 6, aber nicht in 7? Hab ich ne wichtige Info verpasst? :D
 
Habs rausgefunden. Im Log haben sich zwei Meldungen versteckt:

W/JobInfo: Specified interval for 1 is +10s0ms. Clamped to +15m0s0ms
W/JobInfo: Specified flex for 1 is +10s0ms. Clamped to +5m0s0ms

Die waren leider nicht als Error markiert und sind deshalb nicht direkt aufgefallen.

Dank den neuen Richtlinien für Hintergrund Tasks in Nougat darf ein Job wohl nur periodisch aufgerufen werden, wenn der Mindestintervall auf 15 Minuten liegt. Liegt der im Code angegebene Wert darunter, wird er automatisch hochgesetzt. Der Akku dankt an der Stelle. :D

Ich hab in dem Fall hier jetzt um die Funktionalität zu testen einfach den .setPeriodic mit .setMinimumLatency getauscht. Zwar nicht mehr periodisch, aber ich weiß, dass es eigentlich funktioniert.
 
  • Danke
Reaktionen: swa00

Ähnliche Themen

B
Antworten
4
Aufrufe
496
bb321
B
S
Antworten
4
Aufrufe
995
Sempervivum
S
FabianDev
Antworten
5
Aufrufe
561
swa00
swa00
Zurück
Oben Unten