Остановите обновления ядра, затем перезапустите их с помощью таймера. - PullRequest
2 голосов
/ 23 апреля 2010

Мне было интересно, может ли кто-нибудь указать мне (или вставить) какой-то код, чтобы справиться с отключением обновлений Core Location для экономии энергии.

Насколько я понимаю, вам следует прекратить обновления Core Locationкак только вы получите чтение желаемой точности.Если по истечении определенного времени вы не получите хорошую точность считывания, вам также следует прекратить обновления (предположительно, с использованием таймера).Каждый раз, когда вы останавливаете обновления, вы должны запустить таймер (около 60 секунд), чтобы перезапустить Базовое местоположение и получить новое значение.

Есть ли код Apple, который делает все это?Пример кода LocateMe, TaggedLocations и Locations, похоже, этого не делает.

1 Ответ

3 голосов
/ 23 апреля 2010

Пример LocateMe содержит нужный вам код. Вам просто нужно создать второй селектор для огня. LocateMe вызывает следующее в своем методе установки ...

    [self performSelector:@selector(stopUpdatingLocation:) withObject:@"Timed Out" afterDelay:[[setupInfo objectForKey:kSetupInfoKeyTimeout] doubleValue]];

В нем говорится, что через определенное время (kSetupInfoKeyTimeout), пожалуйста, вызовите метод stopUpdatingLocation аргументом NSString = "Timed Out" Внутри метода stopUpdatingLocation вызывается [locationManager stopUpdatingLocation], который сообщает CoreLocation об остановке.

Итак, все, что вам нужно сделать, это добавить еще один селектор, как этот ...

[self performSelector:@selector(timeToRestartCoreLocation) afterDelay: 60];

внутри метода stopUpdatingLocation, который вызовет метод timeToRestartCoreLocation через 60 секунд. Затем внутри вашего timeToRestartCoreLocation метода вызовите [locationManager startUpdatingLocation], чтобы снова запустить CoreLocation.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...