Самая странная вещь: основное местоположение остается активным, даже когда приложение не запущено - PullRequest
3 голосов
/ 07 июля 2010

Этим днем ​​я пошел в iPhone 4 в Apple Store, чтобы посмотреть, могут ли они помочь с проблемой, с которой я столкнулся.Срок службы батареи не был ВСЕ, каким он должен быть - батарея падает на 50%, сидя на моем столе за ночь.Псих.Так что я подозреваю, что у меня есть задница.Случается.Нет, бигги.

Мой дружелюбный гений немного обшаривает мой телефон и указывает, что в верхнем правом углу экрана горит указатель служб определения местоположения.Он попадает в настройки служб определения местоположения.Он отмечает, что в следующих приложениях горит флаг «Полученные данные о местонахождении за последние несколько часов»: «Канал погоды», «Расписание» и два приложения, которые я написал, и до отправки еще несколько дней.

Он отключает ползункидля каждого из этих приложений, и мы видим, что указатель служб определения местоположения в верхнем углу выключен.Включение служб определения местоположения для ЛЮБОГО из моих приложений заставляет его включаться, но это не относится к каналу погоды или сеансам.Но ясно, что включение служб определения местоположения для моих двух приложений запускает службы определения местоположения устройства.Мой паршивый заряд батареи объясняется, но это только начало загадки.

Вот в чем дело ... Ни одно из моих приложений не работает даже в то время.Они даже не на заднем плане.Они выключены.Я думаю, что они оба встроены в профиль отладки на моем устройстве на данный момент, и они оба используют Core Location.Они не приостановлены, они просто не работают.И все же, включение ползунка в панели управления службами определения местоположения для любого из них запускает службы определения местоположения в целом.

Итак ... Какого черта здесь происходит?Ни одно из этих приложений не настроено для фонового расположения.И ... они не на заднем плане!И поскольку у меня отключены службы определения местоположения, нет никаких сомнений в том, что моя батарея сильно расходится.

1 Ответ

3 голосов
/ 07 июля 2010

Решение находится в этой теме на форуме разработчиков Apple: https://devforums.apple.com/thread/58063?tstart=0

Более ранняя версия обоих этих приложений называлась [locationManager startMonitoringSignificantLocationChanges] и никогда не называлась stopMonitoring.... Несмотря на то, что текущая версия приложений не выполняла этот вызов, ОС все еще имела запрос мониторинга, «зарегистрированный» для приложений (и фактически фактически перезапускал их в фоновом режиме, пока я ездил по городу!).

Чего я не знал, так это того, что запрос на мониторинг сохраняется при запуске - и при повторной сборке! Я предполагал, что, как и -startUpdatingLocation, запрос на мониторинг умрет вместе с процессом, но не так. Решением было удалить приложения с моего устройства и переустановить.

...