Kommunikation zwischen Activity und Service

  • Antworten:2
Marco
  • Forum-Beiträge: 1

09.04.2012, 16:21:57 via Website

Hallo zusammen

Ich bin relativ neu bei der Android Programmierung, habe aber bereits meine Erfahrungen mit C, PHP und anderen Sprachen gemacht.
Entsprechend ist für mich der "Logische" Aufbau eigentlich auch kein Problem, bis jetzt konnte ich mich auch gut mithilfe von google durchschlagen.

Nun stehe ich aber vor einem kleinen Problem welches ich so nicht lösen kann.
Ich habe ein APP welches sowohl eine Activity als auch ein Service beinhaltet. Der Service soll im Hintergrund in Echtzeit von einem Server checken ob ein Alarm eingegangen ist und mich ansonsten Informieren.
Das klappt soweit auch ganz gut.

Nun ist es aber so das die Verbindung zum Server ja aus mehreren Gründen abbrechen kann. Damit dann nicht einfach unendlich viele Requests gesendet werden breche ich bei 40 Versuchen die "Push" Funktion ab. Entsprechend sende ich dem User auch eine Notification. Der Service läuft nun allerdings noch.
Wenn ich nun davon ausgehe das die Activity selber geschlossen ist und der User in das Programm zurückkehrt (z.B. weil er die Notification anklickt) findet er da den Status "Push läuft", weil der Acitivity nicht mitgeteilt wurde das die Push Funktion beendet wurde.

Ich dachte mir nun am einfachsten nehme ich da einfach einen BroadcastReciver und teile der Activity mit wenn die Funktion angehalten wird.
Nun kommt aber eben genau das Problem zum Spiel die Activity nicht mehr läuft und beim neustart der Broadcast schon lange vorüber ist.

Deshalb meine Frage: Wie kommuniziere ich zwischen Service und Activity ausserhalb der Laufzeit?

Eine kleine andere Frage welche ich auch noch hätte:
Ich möchte das der Service immer läuft (Ausser vom User gewünscht zu Stoppen). Nun habe ich einfach beim onDestroy() die startService() eingebaut.
Dummerweise war heute Morgen (ich habe den Service übernacht laufen lassen) kein Service mehr am laufen. Im Log konnte ich nur noch sehen das zwar onCreate() aufgerufen wurde, danach aber kein onStart() mehr...

Antworten
Felix
  • Forum-Beiträge: 259

17.04.2012, 09:58:35 via Website

Tach!

Wie kommuniziere ich zwischen Service und Activity ausserhalb der Laufzeit?

Wenn nichts mehr läuft, kannst du nicht dazwischen kommunizieren. Ansonsten kommuniziert man unter Android mit Intents. Und das System startet auch die entsprechenden Activitys, Services und Broadcast Receiver, wenn diese entsprechenden Intent Filter haben.

Ich möchte das der Service immer läuft

Dazu sollte eigentlich genug Information zu finden sein. Der Trick ist, soweit ich weiß, dass das System wissen muss, dass der Service benötigt wird, was man wohl mit einem Symbol in der Status Bar hinbekommt.


Felix.

Antworten