Ich habe gerade angefangen zu lernen, einen Dienst gestern schreiben, und hier habe ich einen Service, den ich erwarten, die ganze Zeit laufen, auch wenn meine App endet. Dieser Dienst hat einen Listener in meiner Firebase-Datenbank und generiert Benachrichtigungen, wenn sich die Daten geändert haben.Android: Dienst abgestürzt nach dem Schließen der App
Was mich verwirrt war, dass mein Dienst erfolgreich ausgeführt werden konnte, nur wenn die App ausgeführt wurde. Unmittelbar nachdem ich die App geschlossen hatte, benachrichtigte mich mein Handy: "Leider ist diese App gestoppt (abgestürzt)". Die Warnung kam zweimal und dann wurde der Dienst nie neu gestartet (ich denke).
Ich konnte nicht herausfinden, warum mein Dienst nach dem Schließen der App abgestürzt ist. Ich habe den Dienst in der OnCreate-Methode in MainActivity gestartet. Und hier ist die ganze Serviceklasse:
Wenn Sie eine Idee haben, bitte helfen. Vielen Dank im Voraus ~~
Vielen Dank für die detaillierte Erklärung ~ Ich werde bald nach FCM Nachrichten suchen. Aber abgesehen davon frage ich mich, ob es irgendeinen Weg gibt, den Wert der Benutzer-ID zu behalten und ihn an die neue Service-Instanz weiterzugeben. – Einsambr
@Einsambr: Übergeben Sie anstelle von statischen Membern auf MainActivity die Daten, die Sie benötigen, im 'Intent', der für' startService() 'verwendet wird und als Parameter von' onStartCommand() 'verfügbar ist. 'Service' erweitert' Context', so dass Sie 'getSharedPreferences()' erhalten und nicht in der Absicht übergeben müssen. Anstelle von START_STICKY. Ich denke, Sie möchten [START_REDELIVER_INTENT] (https://developer.android.com/reference/android/app/Service.html#START_REDELIVER_INTENT) zurückgeben, damit der Intent, der die Startdaten enthält, beim Neustart des Dienstes erneut gestartet wird. –