2016-10-18 4 views
0

A sind mit dem Code unten bekommen die Adresse meines lat/lonauf Android, wie geocoder.getFromLocation

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1); 

Verfahren getFromLocation wird bloking abzubrechen. Ich bin bereits in einem anderen Thread ausgeführt, aber ich möchte den Vorgang abbrechen.

Wie kann ich die getFromLocation abbrechen?

Antwort

1

Überprüfen Sie die Android-Dokumentation für Displaying a Location Address.

Hier erstellen Sie einen IntentService, der auf einem Worker-Thread ausgeführt wird und sich selbst beendet, nachdem der onHandleIntent() abgeschlossen ist. Sie verwenden einen ResultReceiver, der die Ergebnisse von geocoder.getFromLocation (lat, lng, 1) empfängt. Die handler, die in den ResultReceiver Konstruktor übergeben wurde, wäre wieder auf dem Main/Ui-Thread.

In diesem Beispiel müssten Sie den Vorgang überhaupt nicht abbrechen. Es läuft in einem Dienst, in einem Worker-Thread und blockiert daher nicht Ihren Haupt/UI-Thread. Außerdem beendet sich der Dienst selbst, nachdem er geocoder.getFromLocation (lat, lng, 1) abgeschlossen hat. Wenn Sie die Location-Ergebnisse nicht mehr im main/ui-Thread erhalten möchten, können Sie dies problemlos auch innerhalb der ResultReceiver-Klasse verarbeiten.