У меня есть приложение для Android. Основываясь на текущем географическом местоположении пользователя, я хочу получить некоторые удаленные данные в фоновом режиме и сохранить их. Моя реализация такова:Служба Android с обратными вызовами locationListener
С определенным интервалом срабатывает будильник. Служба использует анонимный класс для запроса текущего местоположения и регистрирует обратный вызов locationListener. При вызове onLocationChanged() я инициирую удаленный выбор данных с сервера.
Однако, как только моя служба будет выполнена, зарегистрировав приемник местоположения с использованием класса anonymos, он вернется в ожидании; так как он не дожидается, чтобы обратный вызов произошел до завершения. Поскольку обратный вызов занимает некоторое время и делает вызов, когда служба уже вернулась, он бросает изречение ошибки:
java.lang.RuntimeException: Handler{43e82510} sending message to a Handler on a dead thread
что вполне понятно. Одним из быстрых решений для меня сейчас является то, что я могу использовать getLastKnownLocation из locationManager, поскольку он не отвечает обратным вызовом; но что, если я действительно хочу последнее место прямо сейчас, на службе, а не на активности? Как я могу дождаться завершения обратного вызова и прекратить возврат моего сервиса.
Кроме того, в какой момент последний раз обновляется Knownlocation? Каждый раз GPS регистрирует новое местоположение; обновляет ли он? Что я хочу знать, так это то, что если он не последний, он может быть закрыт до последнего? Поскольку я не видел в эмуляторе Android опции, чтобы настроить период времени между последующими обновлениями.
Любая помощь очень ценится. Cheers
Большое спасибо, что прояснил многое для меня. По крайней мере, это вновь подтверждает убеждение, что я не единственный, кто не может этого понять. :) – Priyank
Сообщите мне, когда вы пройдете список дел. Кроме того, служба определения местоположения Google Play может оказаться полезной для приобретения местоположения. – Ragnar123