2016-10-18 2 views
0

A AM с помощью кода ниже, чтобы получить адрес моей широты/долготына андроид, как прервать geocoder.getFromLocation

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

Метод getFromLocation является bloking. Я уже выполняю в другом потоке, но я хотел бы отменить операцию.

Как я могу отменить getFromLocation?

ответ

1

Ознакомьтесь с документацией для Android для Displaying a Location Address.

Здесь вы создаете IntentService, который работает на рабочем потоке и заканчивается после завершения onHandleIntent(). Они используют ResultReceiver, который получает результаты от geocoder.getFromLocation (lat, lng, 1). Код handler, переданный в конструктор ResultReceiver, вернется к основному потоку/ui.

В этом примере вам не нужно вообще отменять операцию. Он работает в службе, на рабочем потоке и, следовательно, не блокирует ваш поток main/ui. Кроме того, служба завершает работу после завершения геокодирования.getFromLocation (lat, lng, 1). Если вы больше не хотите получать результаты локации на основной/ui-потоке, вы можете легко справиться с этим, а также в пределах ResultReceiver.

 Смежные вопросы

  • Нет связанных вопросов^_^