2010-09-28 16 views
11

Meine App überprüft regelmäßig den Standort mithilfe eines Alarms auf BroastcastReceiver, der einen Dienst startet. Ich weiß, dass ich ein Wakelock erwerben sollte, bevor ich den Service beginne, aber meine Frage ist, wann kann ich es freigeben?Android - Wenn ich LocationManager.requestLocationUpdates verwende, benötige ich einen WakeLock?

Wenn ich den WakeLock frei, nachdem requestLocationUpdates Aufruf kann das Gerät schlafen gehen und rufen Sie nicht mein LocationListener oder wird das Gerät immer aufwacht Updates zu liefern und wach bleiben, bis der Rückruf zurückgekehrt ist? Ich zögere, den Wakelock festzuhalten, weil das das Gerät daran hindern würde, zwischen Aktualisierungen zu schlafen, bis ich mit dem Ort fertig bin.

+0

Meine Vermutung ist, dass das Anfordern von Standortaktualisierungen einen Wakelock enthält, damit Sie Ihren freigeben können. Was machst du jedoch, dass Sie Ortsaktualisierungen benötigen, wenn das Telefon schläft? – Falmarri

+2

Ich denke, es gibt wahrscheinlich viele Anwendungsfälle für Standortaktualisierungen, während das Gerät schläft, z. Aufnahme von GPS-Tracks einer Reise. –

+0

Sie könnten sich [CommonsGuy's 'WakefulService'] [1] ansehen, was laut der Dokumentation mit den partiellen Wakelock-Sachen für Sie umgehen kann. [1]: http: //github.com/commonsguy/cwac-wakeful#readme –

Antwort

2

Also basierend auf meiner Erfahrung (und in den Kommentaren hier bestätigt), die Freigabe der Wake Lock nach dem Aufruf requestLocationUpdates scheint kein Problem zu sein. Leider ist der einzige Weg, um eine endgültige Antwort zu bekommen, ein Plattformentwickler zu fragen, aber ich habe no response erhalten.

+1

Das ist richtig. Ich bin kein Plattformentwickler, habe aber eine funktionierende GPS-Ortungs-App, die korrekt funktioniert, wenn das Gerät "schläft" ... Grundsätzlich enthält jedes spätere Ortungsupdate einen eigenen "WakeLock", mit dem Sie den 'Intent' empfangen können. Wenn Sie dieses Ereignis in Ihrem Empfänger verarbeiten möchten, müssen Sie Ihren eigenen WakeLock erhalten (und später freigeben). –

+0

Würde es einen Unterschied machen, welche 'requestLocationUpdates' Methode Sie aufrufen? @RichardLeMesurier: Sie verwenden die 'PendingIntent' Version? –

+0

@Mr_and_Mrs_D Ich weiß es nicht und empfehle Ihnen, es zu versuchen, um sicherzustellen. Ich habe die 'PendingIntent' Version benutzt. –

0

Überprüfen Sie für Energiesparmodus in Android-Systemeinstellungen: Es muss deaktiviert werden, um Location Manager zu ermöglichen, Update-Speicherort zu generieren, wenn der Bildschirm ausgeschaltet ist; getestet auf Samsung A5; Ich habe zwei Tage gebraucht, um diese Lösung zu finden :-)

Verwandte Themen