iPhone: менеджер местоположения + adwhirl = слив аккумулятора :(

StackOverflow https://stackoverflow.com/questions/4343937

Вопрос

В моем приложении я использую CllocationManager и Adwhirl. Я не сделал никакого конкретного развития в отношении фонового режима: я не хочу, чтобы мое приложение было работать, когда он находится в фоновом режиме, т.е. когда пользователь нажимает на «кнопку Home», местоположение GPS не должно быть обновлено.

Вчера вечером я нажал «домашнюю кнопку», и сегодня утром iPhone вышла из батареи. Это iPhone 4 с iOS 4.1, а не в Jailbreaked, и работает фонового приложения.

Батарея была около 35% вчера вечером, и 0% этим утром (iPhone был выключен).

У меня установил точку останова в моем делегате, который называется каждый раз, когда обновляется местоположение GPS. Когда приложение находится в фоновом режиме, делегат не вызывается. Так что я думаю, что GPS действительно отключен в фоновом режиме: OK.

Этим утром я следую следующую батарею: это примерно на 1% капля каждые 15 мин. Я думаю, что это слишком много.

Должен ли я сделать что-то конкретное, когда приложение идет в фоновый режим? Как вы думаете, это 1% капля нормально?

Это было полезно?

Решение

Да, доступ в Интернет и GPS - два больших стока на батарее. Я вообще не знаю, что вы имеете в виду с нормальными, поскольку другие приложения не работают, вы пришли к выводу, что это на самом деле, что происходит :) Предполагая, что вы тестировали без приложений и не получили 1% на 15 минут ...

Для Ad -WHirl неизвестно, уже останавливается ли он доступ к Интернету, когда приложение попадет в фоновом режиме, но вы можете добавить это в свой прикладной делегат:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    /*
     Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
     If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
     */
    [lm stopUpdatingLocation];
    [adView ignoreAutoRefreshTimer]
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
    /*
     Called as part of  transition from the background to the active state: here you can undo many of the changes made on entering the background.
     */
    [adView doNotIgnoreAutoRefreshTimer]
    [lm startUpdatingLocation];
}

(LM и Adview - это объект менеджера местоположения и AdWhirlView, как объявлен в делегате приложений. Я нашел более полезнее, чтобы все было управление местоположением через методы, которые я делаю в делегате.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top