На Android, как прервать geocoder.getFromLocation

#android #multithreading #location #google-play-services

#Android #многопоточность #Расположение #google-play-сервисы

Вопрос:

Я использую приведенный ниже код, чтобы получить адрес моей широты / широты

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

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

Итак, как мне отменить getFromLocation ?

Ответ №1:

Ознакомьтесь с документацией Android для отображения адреса местоположения.

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

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