Уменьшение расхода батареи при определении местоположения в iOS

Я работаю над приложением для iOS, которое в идеале должно запускать службы определения местоположения в фоновом режиме. Я проверил значимое место, и это недостаточно точно. Точное местоположение идеально, но это потребляет слишком много времени автономной работы, чтобы сделать приложение жизнеспособным.

Чтобы обойти эту проблему с батареей, я думал, что нашел решение, которое использует NSTimerвнутри UIApplication:beginBackgroundTaskWithExpirationHandler:. Это включает местоположение, а затем снова мгновенно выключает его, что запускает обновление местоположения и сбрасывает backgroundTimeRemaining.

Тем не менее, это решение по-прежнему сильно разряжает аккумулятор — 15–20 % каждые 3–4 часа — даже если локация включается только на одну секунду каждые 9 минут.Приложение больше ничего не запускает в фоновом режиме, кроме этого таймера. Я даже пытался отключить все представления при входе в фоновый режим, чтобы убедиться, что ничего не сидит и не потребляет заряд батареи.

Проверив внутренние инструменты, я обнаружил, что приложение использует 0,0% ЦП и 14 МБ памяти в этом состоянии ожидания. На данный момент я немного в растерянности относительно причины, тем более что запуск GPS на 1 секунду каждые 540 секунд не обеспечивает заметного снижения потребления батареи по сравнению с его работой 24/7.

Я начал собирать следующие вопросы, которые могут усугубить проблему, и я надеюсь, что у кого-то есть ответ или идея...

  • Запуск приложения таким образом мешает телефону вводить некоторые вроде режим пониженного энергопотребления?

  • Запуск GPS потребляет огромное количество энергии?

  • Продолжает ли работать GPS какое-то время даже после выключения?

17
задан jimmym715 4 June 2012 в 02:50
поделиться