2013-07-16 1 views
1

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

Я обнаружил, что батарея разряжается.

Может ли кто-нибудь помочь мне в решении этой проблемы?

+0

Вы действительно имеете в виду, что вы определяете местоположение с помощью GPRS? Это не невозможно, а довольно необычно. В любом случае, в какой частоте вы выбираете текущее местоположение? –

+0

Предполагая, что вы говорите об использовании служб определения местоположения: одним из способов сокращения использования энергии является требование более низкой точности. Используйте самую низкую точность, которая работает для вашего приложения. Не запрашивайте обновления фона, если они вам не нужны, и не говорите, что вы являетесь руководством, когда вы этого не делаете. Кроме того, вы можете использовать инструменты для профилирования использования энергии. – nielsbot

+0

Я использовал инфраструктуру CoreLocation. [LocationManager startLocationUpdates] & [locationManager stopLocationUpdates] –

ответ

6

Вы правы в своем наблюдении. Услуги GPS - это энергоемкая работа. Это включает в себя включение бортовых радиоприемников и запрос доступных сотовых вышек, точек доступа Wi-Fi или спутников GPS, что может занять несколько секунд. Если стандартная служба определения местоположения работает в течение длительного времени, она может разрядить аккумулятор устройства.

iOS люди разработали решение для этого. Его названное изменение местоположения означает. Услуга определения местоположения с существенным изменением предлагает услугу определения местоположения с низким энергопотреблением для устройств с сотовыми радиостанциями. Эта услуга доступна только в iOS 4.0 и более поздних версиях, а также может активировать приложение, которое приостановлено или не работает. Как это работает, вы подписываетесь на эту услугу и запрашиваете iOS, чтобы сообщить вам, что «изменение местоположения» происходит от пользователя. Определение «значительного» не в ваших руках. Фактически, это то, что экономит аккумулятор. Вы не запрашиваете местоположение. Вы получаете обновления.

На мой взгляд, этот API превосходный и дает «справедливое» точное положение. Если вы не создаете приложение для отслеживания, этот API - это способ легко работать с батареей. Я не могу сказать вам количество приложений (заплатил & бесплатно) Я безжалостно удалил просто потому, что они злоупотребляли службами определения местоположения и разряжали мою батарею. Представьте, что iPhone пользователя не используется за полдня из-за разряженной батареи. Будьте очень внимательны к этому. Способ запуска этой службы является -

- (void)startSignificantChangeUpdates 
{ 
    // Create the location manager if this object does not 
    // already have one. 
    if (nil == locationManager) 
     locationManager = [[CLLocationManager alloc] init]; 

    locationManager.delegate = self; 
    [locationManager startMonitoringSignificantLocationChanges]; 
} 

После этого, как и стандартных услуг определения местоположения, данные о местоположении доставляются на объект делегата. и вы можете использовать его на основе ваших прецедентов. Больше информации на Apple Location Docs

Смежные вопросы