1

Ich habe eine App, mit der auf Notifications.Actions auf Benachrichtigungen reagiert werden kann. Also im Grunde, ich habe eine Pending Intent mit diesemBenachrichtigungsaktion mit Service in PendingIntent funktioniert nicht, wenn App nicht ausgeführt wird

Intent actionIntent = actionIntent = new Intent(this, NotificationActionIntentService.class); 

actionPendIntent = PendingIntent.getService(
     this, 
     requestCodeBtn, 
     actionIntent, 
     PendingIntent.FLAG_UPDATE_CURRENT 
); 

Was ich in meinem NotificationActionIntentService tun, ist ein Httprequest meiner BE, die den Update erforderlich zu machen.

HINWEIS: Wenn App im Vordergrund ist, funktioniert alles einwandfrei. Hier

ist das Ding:

Nach der GCM empfängt, wenn ich die Notification.Action sofort drücken, noch alles funktioniert gut.

Wenn ich jedoch 30 Sekunden nach dem Empfang des GCM warte, bevor ich die Notification.Action drücke, wird die Netzwerkanforderung nicht abgeschlossen. Die Protokolle zeigen nur, dass es eine Netzwerkanfrage gestellt hat. Aber ich bekomme nie eine Antwort. Wenn ich die Protokolle in meinem BE-Server anschaue. Ich erhalte die Netzwerkanfrage nicht.

Aber wenn ich die App manuell starte, wird das Netzwerk wieder aufgenommen. Es scheint so, als ob die Netzwerkanforderung pausiert und dann fortgesetzt wird, wenn sich die App bereits im Vordergrund befindet. (Ich dieses Verhalten nicht wünschen, weil ich es will im Hintergrund auszuführen nur)

UPDATE: Nach dem Notification.Action Pressen nach einer oder zwei Minuten (ohne die App zu öffnen) erhielt ich java.net.ConnectException: Failed to connect in meinem Logs . (Hinweis: Ich habe eine Internetverbindung). Es scheint, als ob die App keine Verbindung zum Netzwerk herstellen kann, während sie nur im Hintergrund ausgeführt wird.

PS: Ich verwende Retrofit 2 bei der Erstellung meiner Netzwerkanforderung. Auch ich benutze Android N als Testgerät.

+0

testen Sie auf Android O? – Benjamin

+0

Nein, ich benutze Android N @Benjamin – YellowJ

+0

Können Sie den Live-Zyklus des Hintergrund-Service protokollieren, um sicherzustellen, dass es nicht für einige magischen Akku-Speicher-Gründen abgerissen wird, bevor Ihre Anfrage abgeschlossen? – Lukasz

Antwort

Verwandte Themen