Что вы на самом деле хотите знать каждый час? Вы пытаетесь точно определить местоположение или просто определить, значительно ли сдвинулся телефон? startMonitoringSignificantLocationChanges
сообщит вам, когда телефон «значительно» переместится (что обычно означает смену вышек сотовой связи). В городах такое может происходить довольно часто. startMonitoringForRegion:desiredAccuracy:
будет уведомлять вас только тогда, когда вы выходите за пределы заданного радиуса.
startMonitoringSignificantLocationChanges
довольно дешево. В основном это зависит от сотовой антенны, которая, как правило, включена. Если он срабатывает чаще одного раза в час, вы всегда можете просто пропустить обработку и вернуться. Но нет гарантии, что вам будут звонить раз в час, особенно в сельской местности.
Если вы являетесь приложением VoIP, вы можете зарегистрировать периодический интервал «регистрации», когда вы можете запускать код. Но вы не можете сделать это для приложений определения местоположения.
Вы профилировали свой код с помощью инструмента Energy Diagnostics? Что на самом деле ест время и силы? Вы жуете радио, процессор, диск?
ИЗМЕНИТЬ
Когда приложение умирает, Значительные изменения продолжают выполняться и оставляют небольшой значок стрелки направления рядом с процентом на верхней панели инструментов iPhone. Мои пользователи жалуются, что значки остаются после закрытия приложения
После того, как приложение умрет, если вы были зарегистрированы для значительных изменений, вы ожидаете, что вас перезапустят в ответ на них. Если вы хотите отменить регистрацию в случаях, когда вас увольняют, вы можете добавить stopMonitoring...
к своему методу applicationWillTerminate:
. Это не гарантируется, но это хорошо, и я полагаю, что это будет вызвано, если пользователь завершит вас напрямую, и вы не были приостановлены (не проверял это).
Опять же, значительные изменения местоположения должны быть чрезвычайно дешевыми с точки зрения времени автономной работы, пока есть покрытие сотовой связи. Они не должны заставлять GPS оставаться включенным.
person
Rob Napier
schedule
08.09.2011