Mit meiner Android-Anwendung, wenn ein Benutzer eine bestimmte Aktion ausführt, wird ein Hintergrunddienst gestartet, der den aktuellen GPS-Standort abruft und ihn zusätzlich in einer Datenbank speichert. In diesem Dienst verwende ich die requestLocationUpdates()
aus der LocationManager
Klasse und warten, bis die onLocationChanged()
meiner LocationListener
(die durch den Dienst implementiert ist) ausgelöst wird. Aber was ist der beste Weg auf die onLocationChanged
zu warten? Soll ich einfach eine Variable abfragen und warten bis sie gesetzt ist? Irgendwelche Tipps?Was ist der beste Weg, um auf eine GPS-Positionsbestimmung zu warten?
Hinweis: Ich kann nicht einfach in die Datenbank in der onLocationChanged()
wegen einiger anderer Sachen schreiben.
EDIT: Um meine Situation zu klären, kann ich ein Beispiel ähnlich meinem Fall vorstellen: Nehmen wir an, Benutzer drückt eine Taste und eine Methode myMethod
wird ausgelöst, die ein Objekt zurückgibt. Dann, in diesem myMethod werde ich für Standort-Updates vom GPS registrieren (mit requestLocationChanged
) und zusätzlich auf den Standort des Benutzers warten und es für etwas verwenden. Mit anderen Worten, myMethod
kann nicht zurückkehren, bevor der Standort vorhanden ist. Ich weiß nicht, wie ich in diesem Fall onLocationChanged
verwenden kann.
Wahrscheinlich, weil der GPS-Empfänger in einem Hintergrunddienst und nicht sein Hauptprozess ist. – Segfault
Wenn der Benutzer die Aktion ausführt, die den Standortabrufdienst auslöst, sollte meine Anwendung den aktuellen Speicherort abrufen, bevor es fortfährt. Nehmen wir an, Benutzer drückt eine Schaltfläche und eine Methode myMethod wird ausgelöst, die ein Objekt zurückgibt.Dann, in diesem myMethod werde ich für Standort-Updates vom GPS (mit requestLocationChanged) registrieren und zusätzlich auf den Standort des Benutzers warten und es für etwas verwenden. Mit anderen Worten, myMethod kann nicht zurückkehren, bevor der Standort vorhanden ist. Ich weiß nicht, wie ich onLocationChanged in diesem Fall verwenden kann. – qtips
Sie möchten also die Ausführung in myMethod anhalten, während Sie auf die Synchronisierung von gps warten und Ihnen einen Speicherort geben? Du solltest das nicht tun. Wenn dies erforderlich ist, sollten Sie einen Fortschrittsdialog anzeigen, der bei der Ausführung von onLocationChanged beendet wird. Und dann auch in onLocationChanged, was auch immer myMethod mit dem Standort tun muss. –