Как остановить LocationUpdates в Android

#android #progress-bar

#Android #индикатор выполнения

Вопрос:

В моем приложении я использую GPS для получения координат. У меня есть кнопка, которая обновляет местоположение. Когда я обновляю местоположение с помощью GPS, я создаю индикатор выполнения. Если я остановлю индикатор выполнения, я использую

 mlocManager.removeUpdates(mlocListener); 
  

в onCancelListener панели выполнения… Когда я отменяю его, также запускается некоторая фоновая служба из-за

 mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
  

Чтобы остановить это, я поместил свой код в поток. Как я могу остановить поток, поскольку многие функции (например, stop, destroy) устарели?

Ответ №1:

Поток в основном останавливается таким образом:

  1. У вас есть некоторая переменная с синхронизацией доступа к ней. Когда вам нужно остановить поток, вы устанавливаете этой переменной некоторое значение, указывающее, что поток должен быть остановлен.

  2. Поток считывает переменную во время выполнения, и если он видит, что переменная изменяется, останавливает просто возвращает из run() метода.

UPD: Это реализовано с помощью методов interrupt() и interrupted() Thread класса.