Уменьшение использования фона в фоновом режиме iOS - программирование
Подтвердить что ты не робот

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

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

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

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

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

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

  • Запускает ли приложение приложение таким образом, чтобы телефон не входил в какой-то режим с низким энергопотреблением?

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

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

4b9b3361

Ответ 1

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

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

Вы сможете увидеть это, используя шаблон "Energy Diagnostics" в "Инструменты".