2012-04-11 3 views
1

Ich habe eine App, die aus ein paar Aktivitäten besteht. Ich möchte, dass, wenn meine App startet, die ich nach Updates aus dem LocationManager lausche, und nach ein paar Minuten möchte ich Timeout und höre auf nach Updates zu hören. Ich habe das in anderen Apps gemacht, aber wo ich nur eine Aktivität habe.Android: Timer in BackgroundService für Standort

Was ich jetzt habe, ist ein BackgroundService, der auf LocationUpdates hört; Wenn der Standort schnell genug ist, hört er auf, auf Updates zu warten. Aber manchmal bekommt es nicht schnell einen guten Standort, und ich möchte, dass es ausläuft, also habe ich einen Timer, der nach ein bisschen auf Updates hört. Dies funktioniert gut, wenn ich die App starte und in der ersten Aktivität bleibe.

Das Problem ist, wenn ich die App starte, dann starte die App und andere Activities starte, der Timer geht nie aus, so dass LocationManager immer an ist, bis die App beendet wird.

Gedanken? Gibt es eine bessere Möglichkeit, Standortaktualisierungen zu hören, damit jede Aktivität in der App den Standort abrufen und sicherstellen kann, dass das Zeitlimit überschritten wird, um nicht mehr auf Updates zu warten?

Update: Es stellt sich heraus die BackgroundService zerstört wird, wenn ich wechseln Aktivitäten, und ich schalten Sie den Timer in onDestroy(). Danke für die Antwort - das war genug, um zu bestätigen, dass der allgemeine Ansatz vernünftig war und ich wahrscheinlich irgendwo einen dummen Fehler hatte (wahr).

Antwort

0

Warum setzen Sie den Timer nicht in den Hintergrunddienst? Das wird das Problem lösen.

+0

Der Timer befindet sich im BackgroundService. Wenn ich die App starte und auf der ersten Aktivität bleibe, geht der Timer wie gewünscht aus. Wenn ich zu einer anderen Aktivität gehe, geht der Timer nicht aus. – aha

+0

Dann müssen Sie den Dienst herunterfahren? Erfassen Sie Ausnahmen, ohne sie zu protokollieren? Wenn nichts davon hilft, poste etwas Code, damit wir die Details deiner Implementierung sehen können. –