Я разрабатываю приложение для регистрации местоположения, которое каждую секунду сохраняет местоположение телефона.
Я реализовал сервис, который подписывается на обновления 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