【发布时间】: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