Я работаю над iOS-приложением, которое в идеале должно запускать службы определения местоположения в фоновом режиме. Я проверил значительное место, и это недостаточно точно. Точное местоположение идеально, но это требует слишком большого времени автономной работы, чтобы сделать приложение жизнеспособным.
Чтобы обойти эту проблему с батареей, я подумал, что нашел решение, которое использует NSTimer
внутри UIApplication:beginBackgroundTaskWithExpirationHandler:
. Это включает местоположение, а затем сразу же отключается, что запускает обновление местоположения и сбрасывает backgroundTimeRemaining
.
Однако это решение по-прежнему истощает много батареи - 15% -20% каждые 3-4 часа - даже если местоположение включено только одна секунда каждые 9 минут. Приложение не работает ничем другим в фоновом режиме, кроме этого одного таймера. Я даже попробовал высвободить все взгляды при входе в фон, чтобы убедиться, что ничего не сидит и не потребляет аккумулятор.
Проверяя внутренние инструменты, я обнаружил, что приложение использует 0.0% от CPU и 14 МБ памяти, находясь в этом состоянии ожидания. На данный момент я немного потерял причину, тем более что запуск GPS в течение 1 секунды каждые 540 секунд не обеспечивает заметного снижения потребления батареи по сравнению с работой 24/7.
Я начал компилировать следующие вопросы, которые могут повлиять на проблему, и я надеюсь, что у кого-то есть ответ или идея...
-
Запускает ли приложение приложение таким образом, чтобы телефон не входил в какой-то режим с низким энергопотреблением?
-
Запускает ли GPS огромное количество энергии?
-
Поддерживает ли GPS работу в течение определенного периода времени даже после выключения?