【问题标题】:Location Services App - Xcode "Stop" leaves location services running forever定位服务应用程序 - Xcode“停止”让定位服务永远运行
【发布时间】:2016-08-16 02:02:36
【问题描述】:

这是一个奇怪的.. 我正在编写一组使用位置服务的应用程序 - 有些在后台,有些只在前台 - 在大多数情况下,当不需要后台位置时,我很小心每当应用程序进入后台时停止我的 CLLocationManager 更新。

我注意到,通过使用停止按钮停止我在 Xcode 7.3 中的调试构建,这些应用程序在使用定位服务时会永久卡住 - 为了确保没有使用 GPS,我需要重新启动应用程序然后关闭它们用户的方式。

这里是要点:

  • 使用主页按钮关闭应用程序关闭定位服务,无论是从 Xcode 还是从跳板启动。 (我看到位置符号在大约 10 秒后从状态栏中消失。)
  • 强行关闭应用程序,通过双击主页并将它们滑出屏幕,关闭定位服务,无论是从 Xcode 还是从跳板启动
  • 使用 Xcode 的停止按钮关闭应用程序让定位服务永远运行。

还有超级奇怪的部分:

  • 进入卡住状态后重新启动 iPhone会使定位服务永远运行!

唯一的方法是在我完成工作后重新启动应用程序,然后将它们后台运行,否则我的手机每小时会失去 10% 的电量。我在运行 iOS8 和 iOS9 的设备上看到过这种现象。

其他人注意到这种行为吗?或者更重要的是,是否有任何 Xcode 配置可能性来避免这种情况?

【问题讨论】:

  • 关闭或打开定位服务到底是什么意思?您指的是哪个特定服务 - 区域监控、标准位置更新、重要位置更新?
  • 如果您问我要在代码中停止什么,我会调用 stopUpdatingHeading、stopUpdatingLocation 和 stopMonitoringSignificantLocationChanges。但是,如果您问我“关闭位置服务”是什么意思,我的意思是 iPhone 似乎停止访问 GPS 等 - 它从状态栏右上角删除了小位置图标,停止显示紫色位置图标在设置/隐私/定位服务中我的应用程序旁边,并停止以每小时 100 英里的速度消耗电池电量:)

标签: ios core-location cllocationmanager


【解决方案1】:

我不太清楚为什么这种行为不应该开始。要停止重要的位置更新,您必须调用 stopMonitoringSignificantLocationChanges 方法。当你在 Xcode 中点击停止按钮时,你只是强行终止了应用程序,而没有执行任何家务代码。这意味着没有人告诉位置管理器停止执行您的应用请求它执行的操作,当 iPhone 获得新位置时,它会将您的应用启动到后台模式并将该位置读取传送给它。

我怀疑你可以做任何事情来改变这种行为,因为它本质上意味着教 Xcode 如何进行清理,这是特定于你的应用程序的。

回复:“状态栏中的小位置图标

首先,即使箭头是实心的,也并不一定意味着该应用会继续使用 GPS 并大量消耗手机电量。这个箭头图标是关于隐私的,它用于告诉用户至少一个应用程序可能会使用除区域监控之外或之外的一种或多种方法来了解位置更改

请记住,如果以下服务之一处于活动状态,则箭头是实心的:

  • 使用 GPS 进行标准位置更新
  • 没有 GPS 的标准位置更新
  • 重要的位置更新
  • 访问跟踪

我问你使用哪种定位服务的原因是,最后两项服务将在 iPhone 重新启动时恢复,并且在你终止应用程序时不会中断。标准位置更新不会在手机重启时恢复,并且会在应用终止时取消。

【讨论】:

  • 好的,谢谢,这回答了我的问题。现在,至于为什么不期望它开始 - 当我强制关闭手机上的应用程序时,你提到的“清理”会发生 - 也就是说,我的 AppDelegate 的 appWillTerminate 类型方法被调用。所以我认为可以相当合理地想象,当您从调试器中强制退出应用程序时,iOS 系统也可能会调用这些方法。我承认它没有也很合乎逻辑。
  • 您对它的评论并非必要会耗尽电池电量,很高兴知道;但是根据经验,它非常积极地消耗它。当那些重要的位置更新被禁用时,生活会更好:)
  • Mete,我不知道你的代码做了什么(以及如何),但是当你看到电池电量耗尽时,是时候仔细看看你的代码了。 CPU 和无线电(网络)对电池的影响最大。位置更新只会触发所有代码。监控重大位置变化基本上是免费服务。
猜你喜欢
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 2014-11-06
  • 2011-11-16
  • 2014-03-04
相关资源
最近更新 更多