Service reagiert nach einer weile nicht mehr auf Broadcasts

  • 8 Antworten
  • Letztes Antwortdatum
D

draekster

Neues Mitglied
0
Hallo zusammen.

Ich habe ein Problem mit meiner App.
Es geht um folgendes:

Ich habe einen Service, welcher auf Broadcasts reagiert. Dabei ist auch der Broadcast ACTION_HEADSET_PLUG welcher darauf reagiert das ein Kopfhörer angeschlossen wird. Wenn das passiert wird eine Activity gestartet.

Die Activity kann ich dann auch wieder beenden ohne das der Service beendet wird.

Das ganze funktioniert am Anfang auch recht gut und der Service läuft auch ohne Probleme im Hintergrund.

Das Problem ist aber dass nach einiger Zeit genau das aber nicht mehr funktioniert. Das können ein paar Stunden oder auch ein oder zwei Tage sein. Der Service selbst ist aber (laut Android) am laufen.

Wenn ich jetzt den Kopfhörer anstecke und die App nicht reagiert, muss ich die Activity selber starten (über das normale Starter Icon). Dann wird die Activity aber anscheinend zweimal gestartet. Das seh ich daran das ich sie auch zweimal beenden muss.
Dannach kann es sein das die App wieder reagiert wie sie soll... muss aber nich sein...

Da ich in der Android Entwicklung noch ein Anfänger bin kann ich das Problem auch nicht wirklich einschränken...

Könnt Ihr mir einen Tipp geben?
Wenn Ihr mir eine eventuelle Problemstelle nennen könnt kann ich auch den Code dazu posten. Ich würde jetzt nur ungern den ganzen Code posten.

Danke schonmal
Gruß draekster

Edit:
Bitte in den richtigen verschieben. Habe ausversehen in den falschen gepostet.
 
Zuletzt bearbeitet:
Nur zwei Fragen zu Verständnis.

Benutzt du ein Remote Service, bzw dein Service läuft in einen eigenen Prozess?

Und überprüft du beim Start deines Service, ob dieser vielleicht noch vorhanden ist?
 
Also der Service läuft als eigener Prozess.

Ich überprüfe aber nicht ob der Service schon vorhanden ist weil er eigendlich immer laufen sollte. Das einzige was ich wirklich abschalte ist die Activity.

Das ganze läuft wie folgt ab:
  1. Die Activity wird das erste mal gestartet und startet den Service mit. Dabei bindet sich die Activity auch an den Service.
  2. Dannach kann ich die Activity stoppen und vom Service trennen. Dabei läuft der Service aber weiter.
  3. Der Service reagiert dann auf Broadcasts und kann dann die Activity wieder starten.

Allerdings funktioniert der Punkt 3 nach einer Weile eben nicht mehr.
 
Code:
public static boolean isServiceRunning (String serviceClassName){
    final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);
    final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);
    for (RunningServiceInfo runningServiceInfo : services) {
        if (runningServiceInfo.service.getClassName().equals(serviceClassName)){
         return true;
        }
     }
     return false; 
}
Immer aufrufen bevor du einen neuen Service startest. Und dein Service nur starten, wenn er nicht mehr vorhanden ist. Dein Problem ist, dass du mehrere Service in verschiedenen Prozezesse hast. Und die rufen die gleiche Schnittstelle auf.
 
  • Danke
Reaktionen: ui_3k1
Ok ich habe das bei mir mal mit eingebaut.
Danke auch dafür

Ob das Problem auch damit behomen ist kann ich leider noch nicht sagen.
Ich werde mich noch einmal melden.

Aber danke schonmal
Gruß draekster
 
Also das hat leider nichts gebracht...

Heute Nachmittag (nach einer Laufzeit von 25 Stunden) war wieder der gleiche Effekt.
Der Service läuft reagiert aber nicht auf Broadcasts.

Gibt es weitere Vorschläge?
 
@markus.tullius,
Danke für den Tipp, war auch für mich super brauchbar.
 
Ich hab bisher noch keine Broadcast empfangen, muss man dafür zwingend ein Service dauerhaft laufen haben?
Das klingt irgendwie Energieineffizient.
kannt man da nicht auf das entsprechende Broadcast Intent reagieren?
Und dann sogar direkt die passende Activity starten?
 
Ich muss das leider über einen Service regeln (Zuminest soweit ich jetzt Ahnung habe).

Ich will das die Activity gestartet wird sobald ich die Kopfhörer anstecke.

Wenn es da noch andere Möglichkeiten gibt bin ich dafür aber auch offen.
 

Ähnliche Themen

AnnaBauer21
Antworten
14
Aufrufe
1.190
AnnaBauer21
AnnaBauer21
Zurück
Oben Unten