【发布时间】:2014-12-03 20:36:28
【问题描述】:
考虑到我的应用程序的限制,我正在尝试通过使用 CLLocationManager 来提高效率:
如果应用处于“A”模式,请提供尽可能多且准确的位置数据 尽可能。
如果应用程序处于模式“B”,请至少每 10 分钟签入一次 具有“足够好”(可能约为 500m)的位置数据
当应用程序处于 背景。
由于约束 3,我在我的 plist 中向 UIBackgroundModes 添加了“位置”。 我正在像这样配置我的核心位置管理器:
- (CLLocationManager *)manager {
if (_manager == nil) {
_manager = [[CLLocationManager alloc] init];
_manager.desiredAccuracy = kCLLocationAccuracyBest;
_manager.distanceFilter = kCLDistanceFilterNone;
_manager.pausesLocationUpdatesAutomatically = NO;
_manager.delegate = self;
}
return _manager;
}
我还定义了一个这样的枚举:
typedef NS_ENUM(NSUInteger, LocationMonitoringMode) {
LocationMonitoringModeSignificantChanges, //Mode B
LocationMonitoringModeContinuous, //Mode A
};
我是这样使用的:
- (void)setLocationMonitoringMode:(LocationMonitoringMode)mode {
if (mode == LocationMonitoringModeContinuous) {
[self.manager stopMonitoringSignificantLocationChanges];
[self.manager startUpdatingLocation];
} else if (mode == LocationMonitoringModeSignificantChanges) {
[self.manager stopUpdatingLocation];
[self.manager startMonitoringSignificantLocationChanges];
}
}
问题:这种“切换”是使用 CLLocationManager 节省电池的有效方法吗?显然,使用kCLLocationAccuracyBest 和kCLLocationAccuracy3Kilometers(gps 与蜂窝塔无线电)的功耗存在很大差异。但是是否也有很大的成本,比如kCLLocationAccuracyBest和kCLLocationAccuracyNearest10Meters?
【问题讨论】:
-
kCLLocationAccuracyBest&kCLLocationAccuracyNearest10Meters的费用相同。任何低于 100m 的距离都需要设备为 GPS 芯片供电。
标签: ios core-location