CLActivityType值之间的差异
这些值有什么区别:
CLActivityTypeAutomotiveNavigation,
CLActivityTypeFitness,
CLActivityTypeOtherNavigation,
何时分配给CLLocationManager
activityType
属性?
文档建议我应该根据我使用CLLocationManager的目的使用它们,但我没有提供有关确定暂停位置更新的算法差异的提示。
从文档引用:
CLActivityTypeAutomotiveNavigation
[...]此活动可能会导致位置更新仅在车辆长时间不移动时才被暂停。
CLActivityTypeFitness
[...]此活动可能会导致位置更新仅在用户在一段时间内未移动相当长的距离时才会暂停。
CLActivityTypeOtherNavigation
此活动可能会导致位置更新仅在车辆在一段时间内没有移动显着距离时才被暂停。
我真的无法看到这些描述之间的区别。
文件来源:
https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/c/econst/CLActivityTypeOther
看来activityType
只在监控位置时影响电池性能。 特别是当它暂停投票位置时。
会在什么时候暂停投票
AutomotiveNavigation
- 很长一段时间都没有移动。
OtherNavigation
(例如船/火车) - 很长时间没有移动太多 。
Fitness
- 在较短的时间内移动不多。
Other
- 大概不会停止投票。
原因在于
对于船只或火车他们可能已经停止了,但你仍然可以在里面走动,所以你不会在乎这些小小的更新。
对于健身,你可能已经停止了跑步,但你仍然在你的房子里四处移动......你并不是真的想继续耗尽你的电池。
其他说明
关于pausesLocationUpdates的文档自动进一步建议activityType
只确定是否应该自动暂停位置更新。
您可以通过为activityType属性分配一个值来帮助确定何时暂停位置更新。
activityType
不仅会影响电池的使用时间,正如Robert的答案和苹果官方文档所指定的那样,它还可能影响返回的坐标在特定条件下可能“卡”到最近的道路的方式。
简而言之,如果您没有使用活动类型“其他导航”,并且位置正在快速变化(=您的车辆速度足够快),并且您的手机能够以某种方式获取通过Internet或本地缓存,由经理报告的位置将不准确,因为他们将“贴”到最近的道路。
自iOS 6以来,所有版本的iOS都已报告此问题。如果在整个系统上运行的位置管理器的任何实例已设置为非“其他导航”的活动类型,则问题似乎也会出现:note该属性的默认值是“其他”,与“其他导航”不同。
一些参考: