【问题标题】:Use of Standard location service for tracking traveled distance in a foreground/background app使用标准定位服务在前台/后台应用程序中跟踪行驶距离
【发布时间】:2012-09-24 06:12:09
【问题描述】:

我必须开发一种 GPS 导航应用程序,该应用程序需要不断跟踪正在开车的用户的位置。 具体来说,我不必在地图上显示当前位置,只需尽可能精确地记录其位置,以便计算总行驶距离。

当然,如果用户切换到另一个应用程序、来电或类似情况,应用程序需要在后台继续工作……

根据我所做的测试以及从useful post(以及documentation)中学到的知识,在我看来,在这种情况下最好的选择是标准定位服务,使用 .plist 文件中的 UIBackgroundModes = location 配置应用程序。 这样,即使在后台,它也将继续接收位置更新,并且永远不会被操作系统挂起(这实际上只有在调用 [locationManager startUpdatingLocation] 时才是真的)。 this guys 也证实了这一点。 我已经亲自验证了这是真的,只需通过使用 Instruments 和内存监视器模块运行应用程序,您可以在其中看到有关应用程序状态的各种标志,首先将应用程序置于后台,并将 UIBackgroundModes 设置为 location 并且 startUpdatingLocation 处于活动状态,然后没有它.

  • 1) 我现在想知道当应用程序在跟踪位置时终止时该怎么办。我不想丢失任何位置更新,所以只要有新的更新可用,我就需要再次唤醒它。 文档说:

重要提示:applicationWillTerminate: 方法不会被调用,如果你 应用目前已暂停。

但是因为在我的情况下它永远不会被暂停(它将保持在后台但不会暂停),我的逻辑结论是 applicationWillTerminate 将始终被调用,因此我可以在其中注册重要的位置更新或区域监控方法以便被唤醒,然后重新启动标准位置服务。 applicationWillTerminate 是放置此代码的正确位置吗?

  • 2) 一个在后台工作但未挂起的应用程序可能会因为内存过低或我的应用程序没有正确响应内存警告而被操作系统终止? (用户也可以手动关闭它)。我担心 applicationWillTerminate 是否会以某种方式被调用。

  • 3) Apple 会不会批准一个在后台持续使用标准定位服务的应用程序,因为它会快速消耗电池电量? 您是否遇到过类似应用的审批问题?

【问题讨论】:

    标签: iphone ios5 gps core-location multitasking


    【解决方案1】:

    因为你问了很多你不应该在这里做的问题,我只能给你回答其中的一部分。

    如果应用程序被终止,那么您将无法再重新启动它。 这通常是用户终止应用时的情况。
    不用担心 Apple ( ios) 不会终止您的应用程序。您的应用不会使用太多内存,具有巨大位图图形的游戏更有可能被终止。

    1. evry gps 应用程序将耗尽蝙蝠。这不是不批准的理由。

    2. suspended 表示应用程序未处于后台模式,它正在休眠。您将不会收到 Gps,因此无需在终止时给您打电话。您必须先保存数据,请参阅有关后台模式和应用生命周期的苹果文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 2015-01-17
      • 1970-01-01
      • 2016-09-06
      • 2021-01-20
      相关资源
      最近更新 更多