Hallo
Der Alarmmanager muss nicht im Manifest eingetragen werden. Wenn du deinen gesetzten Alarm wieder löschst wird nur der Alarm gelöscht nicht der Service . der wird sich dann wohl von selbst beenden. Was ja momentan auch dein Problem ist.
Oder killt die methode alarmManager.cancel(pendingIntentBackroundService); schon den service?
nein das tut er nicht.
ag an der this.stopService methode (zumindest sagt mir das die fehlermeldung). ist an der was falsch?
Wo hast du das angewendet? Im Service da geht das nicht. Nur von auserhalb.
Im Service benutze stopSelf(); dafür.
Dann hatte ich noch das problem, dass sich mein service in dem festgelegten intervall noch schliesen muss, da ich sonst doppelte daten übergeben kriege.
Ja deshalb vorher prüfen ob der Service noch läuft. bevor du einen neuen locationListener erstellst.
Denn du arbeistest jetzt wohl mit einen Thread, wenn ich mir den Letzen Beispiel Link anschaue.
Füge mal in deinen Code ein par Log Zeilen ein um zu sehen ob überhaupt die Intens richtig ankommen und verarbeitet werden. Also im Reciever, im Service und nicht nur im Listner.
Frage wann oder wie schnell beendet sich den dein Service?
Wegen den beiden Intenst teste mal ob wirklich auch der Stopp Intent zuerst empfangen wird und dann wieder der Start Intent. kannst denen ja ein putextra mitgeben um es zu unterscheiden.
Eigentlich sollte es reichen wenn der Alarmmanager gleich deinen Service aufruft.
Du solltest auch in deinem Service testen ob er noch läuft oder ob er beendet war. Dann brauchst du ihn nicht beenden. Wenn er beendet war durchläufst du deinen intitProzess wenn nicht sollte es reichen wenn du wieder den Service verlässt .
Um zu sehen ob das System den Service beendet kannst du die Methode onDestroy() Überschreiben ,und ein Log einfügen .
Zu deinem LocationManager brauchst du wirklich diese hohe Widerholungsrate 500 msek
Das wird dein System sehr stark belasten und auch das könnte ein Grund sein warum das System die App so schnell beendet wenn es im Hindergrund ist. Deshalb auch die Frage wie lange überhaupt der Service ohne Heartbeat läuft..
Ps zu deinem PendingIntent ich benutze dafür keine Flags.
PendingIntent.getService(this, 0, intentBackroundService, 0);
In deinem fall brauchst du keine flags.
noch zur Info dieser Link von Saw00 http://informationideas.com/news/2012/03/06/how-to-keep-an-android-service-running/ scheint schon etwas älter zu sein.
Ein "setRepeating" beim AlarmManager ist bei den jetzigen Api Versionen auf minimum 1 min auch wenn du kleinere Werte angibst wir der meistens nur jede Minute geschickt.
Glaube ab „KitKat“ o. „Lollipop“ ist 1 min bei ständiger Wiederholung das kleinste.
— geändert am 22.08.2018, 08:59:54
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.