【问题标题】:iPhone background task periodicallyiPhone后台任务定期
【发布时间】:2010-11-02 11:16:23
【问题描述】:

我有一个问题,我想定期收集 GPS 数据,比如每 5 分钟一次。当应用程序运行时,我可以做到这一点。但是我想知道是否有使用 iPhone 的“多任务处理”执行此操作的标准方法。我可以使用持续更新模型和重大更改的后台进程收集数据,但这些数据要么太耗电要么不准确。

我正在查看 NSLocalNotification,但我不确定在定期检查位置时是否将应用程序保持在后台状态,我认为这只能选择启动应用程序。

提前致谢。

【问题讨论】:

    标签: iphone process background gps multitasking


    【解决方案1】:

    无法定期执行 GPS 采集(例如每 5 分钟一次)。

    来自 Apple 文档:

    节省电池电量的提示

    使用基于 iOS 的设备的无线电接收和传输数据比设备上的任何其他操作需要更多的电力。由于 Core Location 依赖这些无线电来确定用户的位置,因此您应该在应用程序中明智地使用位置服务。大多数应用程序不需要一直运行位置服务,因此关闭这些服务是最简单的省电方法。

    • 在不使用位置服务时关闭它们。这似乎很明显,但值得重复。除了提供逐向导航的导航应用程序外,大多数应用程序不需要始终开启定位服务。将定位服务打开足够长的时间以获得位置修复,然后将其关闭。除非用户在移动的车辆中,否则当前位置不应该频繁改变而成为问题。如果需要,您可以随时重新启动定位服务。
    • 尽可能使用重大变化定位服务,而不是标准定位服务。重大变化定位服务可显着节省电力,同时仍允许您保持定位服务运行。对于需要跟踪用户位置变化但不需要标准位置服务提供的更高精度的应用程序,强烈建议使用此方法。
    • 使用较低的分辨率值来获得所需的精度,除非这样做会损害您的应用程序。 请求比您需要的精度更高的精度会导致 Core Location 为额外的硬件供电,并为您不使用的精度浪费电力。除非您的应用程序确实需要知道用户在几米内的位置,否则不要将值 kCLLocationAccuracyBest 或 kCLLocationAccuracyNearestTenMeters 放在所需的Accuracy 属性中。请记住,指定 kCLLocationAccuracyThreeKilometers 的值不会阻止位置服务返回更好的数据。大多数情况下,Core Location 可以使用 Wi-FI 和蜂窝信号返回精度在一百米左右的位置数据。
    • 如果在一段时间内准确度没有提高,请关闭位置事件。如果您的应用程序没有接收到所需准确度级别的事件,您应该查看您收到的事件的准确性并查看如果随着时间的推移它正在改善或保持不变。如果准确性没有提高,可能是因为目前根本无法获得所需的准确性。关闭定位服务并稍后重试可防止您的应用程序浪费电量。

    【讨论】:

    • 您好,感谢您的链接。我几乎认为是这种情况,这确实限制了我使用更多的电池或不太准确的信息。很可能我会选择混合使用一些目标点,然后暂时降低准确性。这可能有助于使用大量电池。
    • Latitudue 应用程序做你想做的事。你可以查看它的开发博客:fi.am/entry/whats-new-in-latitudie-20
    • 根据this question/answer,可以在应用程序处于后台时通过GPS跟踪您的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2012-01-09
    相关资源
    最近更新 更多