У меня есть приложение, которое работает в качестве фоновой службы и постоянно прослушивает обновления сети (местоположение курса). Сам сервис не имеет никаких блокировок. Слушающая часть выглядит так:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 120000, 3000F, this);
Мой onLocationChanged()
метод делает очень простые вещи (просто вычисляет расстояние до предварительно сконфигурированного местоположения, используя Location.distanceTo()
:
При просмотре статистики батареи приложение представляет собой рок-звезду - иногда даже больше, чем дисплей.
Процессор не так уж и плох, но часть "Stay Awake" очень высокая.
Есть ли способ предотвратить это?
Я думал использовать AlarmManager
, чтобы запрашивать обновление каждые 2 минуты, а затем ложиться спать после его получения, но я не уверен, что это хороший подход.
Кроме того, я подумал определить, когда устройство находится в движении, но, скорее всего, это будет еще больший убийца.