iOS GPS 电池耗电,如何减少耗电?

Posted

技术标签:

【中文标题】iOS GPS 电池耗电,如何减少耗电?【英文标题】:iOS GPS Battery drain, how to make it less drain? 【发布时间】:2012-03-23 17:31:26 【问题描述】:

我的服务需要 GPS。我实际上实现了一项服务,它打开 gps,检查位置是否有效,然后进入休眠状态一段时间。 (从 5 秒开始,如果没有检测到移动,它最多可以休眠一分钟) 之后,我再次启动 gps,并获得一个新位置。

但是电池消耗仍然很高!我使用了 locMgr.distanceFilter = 10.0f 和 desiredAccurady = NearestTenMeters。

如何最大限度地减少电池消耗?

【问题讨论】:

【参考方案1】:

这就是我的处理方式。获取位置后,我将其存储在 NSDictionary 中。然后,如果我需要再次定位,我会返回 NSDictionary 而不是重新打开 GPS。 2 分钟后,我重置了 NSDictionary(您可以将时间调整为最适合您应用的套件)。然后在 NSDictionary 重置后下次我需要该位置时,我会从 GPS 中获取一个新位置。

- (NSDictionary *) getCurrentLocation 

if (self.currentLocationDict == nil) 
    self.currentLocationDict = [[NSMutableDictionary alloc] init];

    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    [locationManager startUpdatingLocation];

    CLLocation *myLocation = [locationManager location];

    [self.currentLocationDict setObject:[NSString stringWithFormat:@"%f", myLocation.coordinate.latitude] forKey:@"lat"];
    [self.currentLocationDict setObject:[NSString stringWithFormat:@"%f", myLocation.coordinate.longitude] forKey:@"lng"];
    [locationManager stopUpdatingLocation];
    [locationManager release];

    //Below timer is to help save battery by only getting new location only after 2 min has passed from the last time a new position was taken.  Last location is saved in currentLocationDict
    [NSTimer scheduledTimerWithTimeInterval:120 target:self selector:@selector(resetCurrentLocation) userInfo:nil repeats:NO];


return self.currentLocationDict;


- (void) resetCurrentLocation 
NSLog(@"reset");
[currentLocationDict release];
self.currentLocationDict = nil;

【讨论】:

这不是我想要的。需要更多关于电池消耗的信息。

以上是关于iOS GPS 电池耗电,如何减少耗电?的主要内容,如果未能解决你的问题,请参考以下文章

iOS之性能优化·优化App的电池耗电量

switcholed电池损耗

app耗电优化之一 根据电池情况做任务安排

iOS 11.3 全机型测试,耗电增加?

报告称:苹果iPhone/iPad升级到iOS11后,耗电比iOS10快两倍

电商直播ios app耗电发热比较评测