Сервис Android с обратными вызовами locationListener

У меня есть приложение для Android. Основываясь на текущем географическом местоположении пользователя, я хочу получить некоторые удаленные данные в фоновом режиме и сохранить их. Моя реализация:

Через определенный промежуток времени мой сервис запускает сигнал тревоги. Сервис использует анонимный класс для запроса текущего местоположения и регистрирует обратный вызов locationListener. По вызову onLocationChanged () я инициирую удаленную выборку данных с сервера.

Однако, как только мой сервис завершит регистрацию слушателя местоположения с помощью класса anonymos, он возвращается, как и ожидалось; так как он не ждет обратного вызова, прежде чем закончить. Поскольку обратный вызов занимает некоторое время и выполняет вызов, когда служба уже вернулась, он выдает ошибку, говорящую:

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

Что вполне понятно. Один быстрый обходной путь для меня сейчас заключается в том, что я могу использовать getLastKnownLocation из locationManager, поскольку он не отвечает обратным вызовом; но что, если я действительно хочу получить последнее местоположение прямо сейчас, в сервисе, а не в активности? Как я могу ждать, пока не произойдет обратный звонок, и не сможет вернуть мой сервис.

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

Буду признателен за любую оказанную помощь. ура