-2

Ich habe eine vielbeschäftigte App für GPS-Tracking entwickelt. Es funktioniert gut im Vordergrund. Es verwendet GPS/Standort-Callbacks zusammen mit Hintergrunddiensten für Text-to-Speech, Nachrichten und Heart Rate Monitor-Hardware. Das Problem besteht darin, dass das Android-Betriebssystem es gelegentlich herunterfährt, wenn es im Hintergrund ausgeführt wird. Wenn der Bildschirm mit der POWER-Taste geschlossen wird, läuft er weiter OK. Wenn die HOME-Taste zum Schließen des Bildschirms und zum Ausführen anderer Apps verwendet wird, schaltet Android die App manchmal nach einigen Minuten aus, obwohl sie weiter funktionieren muss. Gibt es eine Möglichkeit, die App mit isFinishing()/onDestroy() oder ähnlichem laufen zu lassen? Die Operation ZURÜCK-Taste wird korrekt erfasst und gibt dem Benutzer eine Option zum Abbrechen. Danke, Chris.App Herunterfahren von Android, wenn im Hintergrund, Wie zu stoppen?

+1

Verwenden Sie Sticky Service für die Aktualisierung im Hintergrund. Obwohl Sie Android Doe Verhaltensänderungen seit Android M zu sehen haben, hier ist für [Android N] (https://developer.android.com/about/versions/nougat/android-7.0-changes.html), [Android O ] (https://developer.android.com/about/versions/oreo/background-location-limits.html). – ADM

Antwort

1

diese App Um zu vermeiden, sollte einen Vordergrund-Dienst starten (einen Dienst, den startForeground() aufruft), eine nicht-dismissable Meldung anzeigen und ein PowerManager.PARTIAL_WAKE_LOCK

Es verhindert, dass das Telefon erwerben Sleep-Modus und verhindert eingeben das System von der Tötung Ihrer App (es kann nicht zu 100% vermieden werden), aber dies wird offensichtlich einen signifikanten Einfluss auf den Akkuverbrauch haben.

+1

"Es verhindert, dass das Telefon in den Energiesparmodus wechselt" - Nein, tut es nicht. Ein 'WakeLock' verhindert, dass das Gerät in den Schlafmodus wechselt. Ein Vordergrunddienst erhält nicht automatisch einen 'WakeLock'. – CommonsWare

+1

Ok, ich habe den Wake Lock vergessen ... bearbeitet. Aber in einigen Tests, die ich vor ein paar Monaten gemacht habe, funktionierte es genauso mit und ohne wake_lock, aber ich behielt es trotzdem, nur für den Fall. –

Verwandte Themen