Service Android beenden

  • Antworten:4
  • Bentwortet
Dennis O.
  • Forum-Beiträge: 3

13.01.2012, 18:49:51 via Website

Hi Community
ich habe seit kurzen mit der Androidprogrammierung angefangen und habe deswegen noch leichte Startschwierigkeiten.

Was ich bis jetzt gemacht habe
Ich habe per Button ein Service gestartet der auch im Hintergrund läuft wenn die App geschlossen wird
Der Service schickt alle x sekunden (noch zu Test zwecken später Minuten) einen Broadcast an das Verbundene Wlan

Problem:
Ich bekomme nicht den Service wieder gestopt.

MfG
Dennis

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

13.01.2012, 19:19:35 via Website

Warum rufst Du denn in Deiner Activity nicht einfach über einen Button z.B. folgendes auf:


public void myExit() {
stopService(new Intent(this, NameDeineServiceKlasse.class));
Log.d(DEBUG_TAG,"aus dem MENU_QUIT, shutting down Service und Activity completly... ");
finish();
}

lg Voss

Dennis O.

Antworten
Dennis O.
  • Forum-Beiträge: 3

14.01.2012, 14:16:04 via Website

Danke für die schnelle Hilfe. Manchmal sieht man den Wald vor lauter Bäume nicht :D

Antworten
Gelöschter Account
  • Forum-Beiträge: 4

09.12.2013, 12:13:11 via Website

Funcktioniert bei mir nicht... ich mache das momentan so dass ich den service normal stoppe, wenn das serviceStart Intent nicht null ist.
"stopService(serviceStart);"

Wenn das serviceStart Intent null ist, weil die APP selbst zwischendurch beendet wurde aber der Service noch weiter läuft dann starte ich den Service neu, um ein Intent zurück zubekommen. Ich übergebe dann dem Service ein Extra, welches dem Service dann sagt, dass es beim onStartCommand "START_NOT_STICKY" zurückgeben soll. Wenn ich das nicht übergebe wird START_STICKY zurückgebeben, da der Service immer neugestartet werden soll, wenn es vom system beendet wird.

Starten sieht so aus
1serviceStart = new Intent(cordova.getActivity(), TrackingService.class);
2
3 serviceStart.putExtra("timekey", generateTimeKey());
4 serviceStart.putExtra("aktActivityID", args.getString(0));
5
6 cordova.getActivity().getApplicationContext().bindService(serviceStart, myConnection, Context.BIND_AUTO_CREATE);
7 cordova.getActivity().getApplicationContext().startService(serviceStart);

und stoppen sieht so aus
1if(serviceStart == null) {
2 serviceStart = new Intent(cordova.getActivity(), TrackingService.class);
3 serviceStart.putExtra("timekey", "");
4 serviceStart.putExtra("stopTracker", true);
5
6 cordova.getActivity().getApplicationContext().bindService(serviceStart, myConnection, Context.BIND_AUTO_CREATE);
7 cordova.getActivity().getApplicationContext().startService(serviceStart);
8 if(serviceStart != null) {
9 cordova.getActivity().getApplicationContext().stopService(serviceStart);
10 cordova.getActivity().getApplicationContext().unbindService(myConnection);
11 } else {
12 callbackContext.success(0);
13 }
14
15 } else {
16 cordova.getActivity().getApplicationContext().stopService(serviceStart);
17 cordova.getActivity().getApplicationContext().unbindService(myConnection);
18 }

Das was oben beschrieben wurde funktioniert bei mir nicht...
1cordova.getActivity().getApplicationContext().stopService(new Intent(cordova.getActivity().getApplicationContext(), TrackingService.class));

Antworten
impjor
  • Forum-Beiträge: 1.793

09.12.2013, 13:32:14 via App

Roy
Wenn das serviceStart Intent null ist, weil die APP selbst zwischendurch beendet wurde aber der Service noch weiter läuft dann starte ich den Service neu, um ein Intent zurück zubekommen.
Warum erstellst du nicht einfach den Intent neu, ohne den Service neu zu starten?
LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten