Я пытаюсь реализовать таймер, который отправляет GPS-координаты на мой сервер каждые 10 секунд.
Это нереально. Вы можете не получить никаких исправлений вообще. Вы не можете получить исправления до истечения 10 секунд. Например, я нахожусь в процессе тестирования службы, предназначенной для того, чтобы помочь разработчикам опрашивать обновления местоположения с гораздо более низкой частотой (например, один раз в час), и это может легко занять более минуты, чтобы получить исправление, даже с телефона сидя у окна.
Вот фрагмент кода службы, которую я внедряю:
Это ошибочно. getLastKnownLocation()
обычно возвращает null
, для начала, за пределами вашей Timer
/ TimerTask
проблемы.
Я надеюсь, что кто-то может что-то предложить.
Я бы начал с изменения дизайна вашего приложения, чтобы избавиться от 10-секундной концепции как жесткого требования.
Затем используйте requestLocationUpdates()
. Если вы получаете слишком много показаний, игнорируйте те, которые вам не нужны, и не отправляйте их на сервер. И, конечно, пожалуйста, запускайте это только в течение короткого периода времени и только на основании положительного запроса пользователя (например, явного запуска вашего приложения), учитывая потребление батареи, связанное с поддержанием GPS-радио.
Документация по requestLocationUpdates()
определенно сбивает с толку в плане синхронизации - я только недавно понял, что минимальное время не обязательно соблюдается.