Ich habe eine IntentService
, die eine lange Arbeit macht, es dauert etwa 15 Minuten. Es ist ein Synchronisierungsprozess, um neue Daten von meinem Server zu erhalten.Warum mein BroadcastReceiver nach einer Weile nicht mehr empfängt
Wenn dieser Dienst startet, starte ich auch eine Aktivität, um den Fortschritt anzuzeigen.
Mit dieser Aktivität wird eine BroadcastReceiver
erstellt, die vom Dienst über den Prozessfortschritt gesendete Nachrichten abfängt.
Wenn ich die App die Arbeit mache, nach einer Weile die SO den Bildschirm ausschalten.
Wenn ich den Bildschirm nach etwa 15 Minuten erneut einschalte, wurde der Dienst bereits ausgeführt, aber der Fortschritt scheint veraltet zu sein. Die BroadcastReceiver
hat aufgehört zu arbeiten, und meine END OF SYNCHRONIZATION
Nachricht wurde von der Aktivität nicht empfangen.
Das Problem ist, dass ich bei dieser Nachricht die Hauptaktivität erneut starte, damit der Benutzer die App erneut verwenden kann.
Wie kann ich das lösen?
Beitrag einig Code ... Ich würde vermuten, Ihre Aktivität wird nicht mit Nachrichten, weil Ihr Empfänger nicht registriert onPause oder onDestroy ist, aber es ist schwer zu erzählen, da es keinen Code gibt. Ich würde vorschlagen, serviceBinding und Messenger anstelle von Broadcast-Empfängern zu hören und eine Staut-Nachricht senden, wenn Ihre Aktivität bindet, um den neuesten Stand zu erhalten ... aber wieder würde Code helfen. –
@AdamW Die Übertragung ist in den Methoden onStart und onStop registriert und nicht registriert. –