Android-Dienst mit locationListener-Rückrufen

Ich habe eine Android-Anwendung. Basierend auf dem aktuellen geografischen Standort des Benutzers möchte ich einige entfernte Daten im Hintergrund abrufen und speichern. Meine Implementierung ist:

In einem bestimmten Intervall löst ein Alarm meinen Dienst aus. Der Dienst verwendet eine anonyme Klasse, um den aktuellen Standort abzufragen und einen locationListener-Rückruf zu registrieren. Beim Aufruf von onLocationChanged () starte ich den Remote-Datenabruf vom Server.

Nachdem mein Dienst die Registrierung des Standortlisteners mithilfe der Anonymos-Klasse abgeschlossen hat, wird er wie erwartet zurückgegeben. da es nicht darauf wartet, dass ein Rückruf erfolgt, bevor es fertig ist. Da der Rückruf einige Zeit in Anspruch nimmt und einen Anruf tätigt, wenn der Dienst bereits zurückgekehrt ist, wird eine Fehlermeldung ausgegeben:

java.lang.RuntimeException: Handler{43e82510} sending message to a Handler on a dead thread

Was ist ganz verständlich. Eine schnelle Umgehung für mich ist jetzt, dass ich getLastKnownLocation von locationManager verwenden kann, da dies nicht per Rückruf antwortet. aber was ist, wenn ich den aktuellsten Standort in einem Dienst und nicht in einer Aktivität haben möchte? Wie kann ich auf einen Rückruf warten und meinen Dienst daran hindern, zurückzukehren?

Auch an welchem Punkt wird lastKnownlocation aktualisiert? Jedes Mal, wenn GPS einen neuen Standort registriert. aktualisiert es es? Was ich wissen möchte ist, dass, wenn es nicht aktuell ist, es immer noch für aktuell geschlossen sein kann? Da ich in Android Emulator keine Option zum Konfigurieren des Zeitraums zwischen nachfolgenden Updates gefunden habe.

Jede Hilfe wird sehr geschätzt. Pros

Antworten auf die Frage(2)

Ihre Antwort auf die Frage