Hallo alle miteinander,
seit einigen Stunden plage ich mich mit einem sehr nervigen Problem herum und zwar, dass ich einen Service einfach nicht ohne Unterbrechung lange ausführen kann.
Egal was ich auch ausprobiert habe, die Ausführung des Service will einfach nicht ohne Unterbrechung funktionieren...
Die Aufgabe meines Service sollte sein, mittels einer Do Until Loop - Schleife solange Zufallszahlen zu erzeugen und mit vorgegebenen Zahlen zu vergleichen, bis die Abbruchbedingung erfüllt ist.
Anschließend sollten der Service wieder gestoppt und diverse Werte aus dem Schleifendurchlauf in der Activity angezeigt werden
Das könnten unter Umständen mehrere Millionen Schleifendurchläufe und somit einige Minuten Laufzeit bedeuten.
Bei der Ursachenforschung bin ich zu dem Ergebnis gekommen, dass trotz deklarierens des Service als "Vordergrund-Service", das Betriebssystem den Service offensichtlich trotzdem killt und ihn anschließend nach einigen Sekunden erneut startet.
Der erneute, automatische Start des Service nützt mir allerdings nichts, weil von dem Servicemodul und sowohl auch von der Activity die Routinen "Process_Globals" durchlaufen und alle Variablen erneut initialisiert werden.
Somit gehen die Werte der Variablen für den Schleifendurchlaufzähler und des Grenzwertes für die Abbruchbedingung verloren bzw. auf Null.
Weiterhin lässt sich auch nachdem der Service vom Betriebssystem gekillt und erneut gestartet wurde die Activity nicht mehr anzeigen.
Lediglich der Titel wird dann noch angezeigt aber keine View-Objekte mehr.
Solange ich aber mit der Ausführungsdauer der Schleife unterhalb der Zeit bleibe wo wohl sonst das Betriebssystem den Service killen würde, funktioniert alles.
Es muss doch möglich sein eine Schleife in einem Service und somit den Service solange auszuführen bis irgendwann einmal die Abbruchbedingung erreicht ist und dann anschließend den Service zu stoppen???
Ich würde mich sehr freuen, wenn mir bei meinem Problem jemand helfen und mir den entscheidenden Tipp oder gar eine Lösung liefern könnte.
Vielen Dank schon einmal im vorraus!
Zur Deklaration als Vordergrund-Service habe ich folgende Anweisungen im Servicemodul verwendet in:
#Region Service Attributes
#StartAtBoot: False
#StartCommandReturnValue: android.app.Service.START_STICKY
und in:
Sub Service_Start(StartingIntent As Intent)
notification1.SetInfo("Servicetest", "Die App läuft nun im Hintergrund!", Main)
notification1.Light = True
notification1.Sound = False
notification1.Vibrate = False
notification1.AutoCancel = True
Service.StartForeground(1, notification1)
seit einigen Stunden plage ich mich mit einem sehr nervigen Problem herum und zwar, dass ich einen Service einfach nicht ohne Unterbrechung lange ausführen kann.
Egal was ich auch ausprobiert habe, die Ausführung des Service will einfach nicht ohne Unterbrechung funktionieren...
Die Aufgabe meines Service sollte sein, mittels einer Do Until Loop - Schleife solange Zufallszahlen zu erzeugen und mit vorgegebenen Zahlen zu vergleichen, bis die Abbruchbedingung erfüllt ist.
Anschließend sollten der Service wieder gestoppt und diverse Werte aus dem Schleifendurchlauf in der Activity angezeigt werden
Das könnten unter Umständen mehrere Millionen Schleifendurchläufe und somit einige Minuten Laufzeit bedeuten.
Bei der Ursachenforschung bin ich zu dem Ergebnis gekommen, dass trotz deklarierens des Service als "Vordergrund-Service", das Betriebssystem den Service offensichtlich trotzdem killt und ihn anschließend nach einigen Sekunden erneut startet.
Der erneute, automatische Start des Service nützt mir allerdings nichts, weil von dem Servicemodul und sowohl auch von der Activity die Routinen "Process_Globals" durchlaufen und alle Variablen erneut initialisiert werden.
Somit gehen die Werte der Variablen für den Schleifendurchlaufzähler und des Grenzwertes für die Abbruchbedingung verloren bzw. auf Null.
Weiterhin lässt sich auch nachdem der Service vom Betriebssystem gekillt und erneut gestartet wurde die Activity nicht mehr anzeigen.
Lediglich der Titel wird dann noch angezeigt aber keine View-Objekte mehr.
Solange ich aber mit der Ausführungsdauer der Schleife unterhalb der Zeit bleibe wo wohl sonst das Betriebssystem den Service killen würde, funktioniert alles.
Es muss doch möglich sein eine Schleife in einem Service und somit den Service solange auszuführen bis irgendwann einmal die Abbruchbedingung erreicht ist und dann anschließend den Service zu stoppen???
Ich würde mich sehr freuen, wenn mir bei meinem Problem jemand helfen und mir den entscheidenden Tipp oder gar eine Lösung liefern könnte.
Vielen Dank schon einmal im vorraus!
Zur Deklaration als Vordergrund-Service habe ich folgende Anweisungen im Servicemodul verwendet in:
#Region Service Attributes
#StartAtBoot: False
#StartCommandReturnValue: android.app.Service.START_STICKY
und in:
Sub Service_Start(StartingIntent As Intent)
notification1.SetInfo("Servicetest", "Die App läuft nun im Hintergrund!", Main)
notification1.Light = True
notification1.Sound = False
notification1.Vibrate = False
notification1.AutoCancel = True
Service.StartForeground(1, notification1)