Чтобы сохранить батарею, я отслеживаю обновления местоположения, чтобы узнать, был ли пользователь неподвижен в течение определенного периода времени; Если это так, я затем понижаю CLLocationManager с его основных настроек kCLLocationAccuracyBestForNavigation и kCLDistanceFilterNone (максимальные настройки) для мониторинга значительных изменений местоположения.Расположение ядра: переключатель startMonitoringSignificantLocationИзменяет вниз от kCLDistanceFilterNone
Проблема в том, что она не работает: после вызова startMonitoringSignificantLocationChanges обновления местоположения продолжают входить с высокой скоростью, как это было до вызова.
Как вы активируете активность, а затем снова создаете резервную копию?
Update: этот код отвечает на вопрос:
//Set
if (shouldMonitorSignificantChangeUpdates) {
NSLog(@"Entering -> significant change mode");
[self.locationManager stopUpdatingLocation];
[self.locationManager startMonitoringSignificantLocationChanges]; //aka stop monitoring every location change
} else {
NSLog(@"Exiting <- significant change mode");
[self.locationManager stopMonitoringSignificantLocationChanges]; //aka begin monitoring every location change
[self.locationManager startUpdatingLocation];
}
Как вы это тестируете? По документации устройство решает, что произошло существенное изменение местоположения путем обнаружения изменения идентификатора ячейки (GSM). Посмотрите также http://stackoverflow.com/questions/8290707/startmonitoringsignificantlocationchanges-lack-of-accuracy –
Да, похоже, что я не позволял башне меняться и поэтому так и не получил обновления, ошибочно полагая, что вся система была отключен. – SG1