Android LocationManger идет спать? - PullRequest
1 голос
/ 19 августа 2011

Я разрабатываю приложение для регистрации местоположения, которое каждую секунду сохраняет местоположение телефона.
Я реализовал сервис, который подписывается на обновления LocationManager:

HandlerThread thread = new HandlerThread("LocationServiceHandler");
locationManager.requestLocationUpdates(GPS_PROVIDER, 
    1000 /* milliseconds*/, 0 /* meters */, listener, thread.getLooper());

Служба запущена путем привязки к контексту приложения.
Приложение обычно работает в фоновом режиме и не требует взаимодействия с пользователем.
Обычно это работает нормально, когда я обхожу здание - служба каждую секунду получает новое местоположение + временную метку и сохраняет ее в файле, расположенном во внешнем хранилище.
Но когда я добирался до открытого поля вдали от города, я обнаружил разрыв в 4-5 минут между записями в файле журнала. Могу с уверенностью сказать, что в тот момент телефон не использовался и находился под открытым небом, ничего видимого не блокировало спутники. Это происходит нерегулярно, примерно раз в час, и я не могу воспроизвести это поведение в моем офисе.
Есть идеи, что может вызвать это? Как этого избежать?
Телефон Nexus S, Android 2.3.4

1 Ответ

0 голосов
/ 19 августа 2011

Вы используете Wakelock? Телефон может пойти спать, и поэтому вы пропустите места. В противном случае это может быть просто менеджер местоположения, который просто не даст вам местоположение, так как 1000 мс - лучший вариант. Пожалуйста, смотрите Обновление GPS-приемника каждые 5 секунд ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...