【问题标题】:Difference between CLActivityType values - iOS SDKCLActivityType 值之间的差异 - iOS SDK
【发布时间】:2016-01-03 02:51:43
【问题描述】:

这些值有什么区别:

CLActivityTypeAutomotiveNavigation,
CLActivityTypeFitness,
CLActivityTypeOtherNavigation,

当分配给CLLocationManageractivityType 属性时?

文档建议我应该根据我使用 CLLocationManager 的目的来使用它们,但我没有给出关于确定停止位置更新的算法的差异的提示。

引用自文档:

CLActivityTypeAutomotiveNavigation

[...] 此活动可能会导致位置更新 仅当车辆长时间不移动时才暂停。

CLActivityTypeFitness

[...]此活动可能会导致位置更新 仅当用户没有移动很长的距离时才暂停 一段时间。

CLActivityTypeOtherNavigation

仅当车辆在一段时间内没有移动很长的距离时,此活动可能会导致位置更新暂停。

我真的看不出这些描述之间的区别。

文档来源:

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/c/econst/CLActivityTypeOther

【问题讨论】:

    标签: ios location cllocationmanager


    【解决方案1】:

    似乎activityType 仅在监控位置时影响电池性能。特别是当它暂停轮询位置时。

    会暂停轮询

    AutomotiveNavigation - 很久没有完全移动了。

    OtherNavigation(例如船/火车)- 很长时间没有移动很多

    Fitness - 在较短的时间内没有太大的移动。

    Other - 大概不会停止轮询。

    原因

    • 对于船只或火车,它们可能已经停止,但您仍可能在其中四处走动,因此您并不真正关心这些小更新。

    • 为了健身,您可能已经停止了跑步,但您仍在屋内四处走动……您并不想一直消耗电池电量。

    其他说明

    pausesLocationUpdatesAutomatically 的文档进一步建议activityType 仅确定是否应自动暂停位置更新。

    您可以通过为 activityType 属性分配一个值来帮助确定何时暂停位置更新。

    【讨论】:

    • 对我来说还是不太清楚。例如,当我使用 AutomotiveNavigation 时,位置会在停止移动一段时间后停止更新。那么我再次移动后它会恢复更新吗?
    【解决方案2】:

    activityType 不仅会影响 Robert 的回答和 Apple 官方文档中指定的电池寿命,还可能会影响返回的坐标在某些条件下“捕捉”到最近道路的方式。

    简而言之,如果您没有使用“其他导航”类型的活动,并且位置变化很快(= 您在车辆上的速度足够快),并且您的手机能够通过某种方式获取所需的信息互联网或本地缓存,经理报告的位置将不准确,因为它们会被“捕捉”到最近的道路。

    自 iOS 6 以来的所有 iOS 版本都报告了此问题。如果在整个系统上运行的位置管理器的任何实例设置了活动,则似乎也会出现此问题不是“其他导航”的类型:请注意,该属性的默认值为“其他”,与“其他导航”不同。

    一些参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-27
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多