Hi,
erste Frage: Gibt es keine Suchfunktion in diesem Forum oder bin ich blind?
Jetzt zum eigentlichen Problem.
Ich habe eine Test-App die einen Service aufruft und die Location Änderungen registriert und dann eine Funktion aufruft. Bei dem Aufruf erfolgt dann auch eine Aktualisierung der Notificationbar. Dies funktioniert im Debug-Modus daheim vor dem Rechner auch ganz toll. Ich bekomme in der Notification die aktuelle Position angezeigt. Heute stand eine kleine Dienstreise an und ich wollte die Gelegenheit nutzen die Test-App mal nebenbei laufen zu lassen. Bei den Kontrollen war die Positionsangabe in der Notification auch ok, hatte soweit immer gestimmt (ca. alle 5-10min habe ich das Handy angemacht und geschaut). Dann habe ich das Handy beiseite gelegt und die Zeit verstrich. An meinem Zielort habe ich das Handy wieder angemacht und dann gesehen dass die Position überhaupt nicht stimmte, gute 50km Entfernung lag dazwischen. Einen kurzen Moment später wurde die Position richtig angezeigt.
Ich vermute die App ist in den DeepSleep verfallen, OBWOHL ich der Meinung war dies zu verhindern.
In der onCreate des Service mache ich folgendes:
try { pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PARTIAL_WAKE_LOCK_for_LocationService"); wakeLock.acquire(); } catch (Exception e) { pm = null; wakeLock = null; e.printStackTrace(); }
und in der onDestroy hebe ich diesen Lock wieder auf. Auch in der AndroidManifest.xml habe ich
stehen.
In der Doku steht zwar nur etwas von der CPU für PowerManager.PARTIAL_WAKE_LOCK, jedoch gehe ich davon aus dass die ganzen Sensoren auch weiterhin laufen, da es sonst keine passendere Option gibt.
Hat Jemand eine Idee was ich falsch mache? Oder was ich besser machen könnte?
Viele Grüße
redneb