2014-11-03 231 views
2

我需要在特定的时间跟踪用户在后台的位置。后台任务是否可以在下午7点至11点开始?背景位置

到目前为止,我一直能够实现这一目标的唯一方法是让后台任务持续运行,这似乎是一种不好的方法,因为它大大消耗电池。

我已经设置了CLLocation管理器的精确度和距离过滤器,以上述时间以外节省电池:

[locationManager setDesiredAccuracy:kCLLocationAccuracyThreeKilometers]; 
[locationManager setDistanceFilter:2000.0f]; 

我然后7-11pm之间改变这一回:

[locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
[locationManager setDistanceFilter:10.0f]; 

我已关闭locationManager.pausesLocationUpdatesAutomatically,因为这似乎会在用户停留15-20分钟后终止后台任务 - 当用户再次移动时不会恢复。

有没有更好的方法来最大限度地减少这些时间以外的电池消耗。

另外,我是否正确认为startMonitoringSignificantLocationChanges只在您移动超过500m时才进行位置更新 - 如果情况确实如此,那么在晚上7-11pm时它将不够准确。

任何想法?

回答

1

这是一个很常见的问题,不幸的是,您不可能精确地控制背景执行的时间和方式。

关于你的问题,如果只startMonitoringSignificantLocationChanges当设备移动大约500平方米的更新也是正确的,它是在docs说,这你可能阅读:)

The significant-change location service delivers updates only when there has been a significant change in the device’s location, such as 500 meters or more. 
+0

感谢,对如何延长电池的任何想法在这些时间之外,如果后台任务必须连续运行? – 2014-11-03 16:29:05