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

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

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

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

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

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

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

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

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


person Andy    schedule 08.04.2012    source источник
comment
@GregularExpressions - звучит правильно. Я не верю, что оборудование GPS могло бы что-либо сделать в первую секунду после включения. Приемник должен получить полный кадр сообщения от нескольких спутников, чтобы вычислить свое положение, а ширина полосы / битрейт сигнала GPS очень низкая (иначе это будет невозможно с помощью небольших маломощных приемников). Даже если поступил сигнал о выключении, система GPS, вероятно, будет работать до тех пор, пока не получит одно исправление перед выключением.   -  person Martin James    schedule 08.04.2012
comment
..и приемники в этих маломощных микросхемах GPS в любом случае - мусор.   -  person Martin James    schedule 08.04.2012
comment
Вы решили свою проблему?   -  person knagode    schedule 16.12.2012
comment
Это не решило проблему, и исследование все еще продолжается. Что я действительно установил, так это то, что этот процесс останавливает переход iPhone в глубокий сон, и это не мое подключение к GPS напрямую вызывает проблему, но все другие процессы (например, почта, icloud и т. Д.) Продолжают работать на полную мощность. .   -  person Andy    schedule 10.07.2013
comment
@Andy: Вы пришли к решению через 2 года :)? Спасибо .   -  person androniennn    schedule 17.08.2015


Ответы (1)


Да, сессия 312 WWDC 2011 «Оптимизация производительности и энергопотребления iOS с помощью инструментов» охватывает это примерно на 45-минутной отметке.

Когда вы закончите использовать GPS, он может оставаться активным до 10 секунд, а активные радиомодули выводят устройство из спящего режима и, пока они активны, не дают устройству «спать».

Вы сможете увидеть это, используя шаблон «Диагностика энергопотребления» в инструментах.

person GregularExpressions    schedule 08.04.2012