这是一个奇怪的...我正在编写一组使用位置服务的应用程序 - 一些在后台,一些只在前台 - 而且在大多数情况下,当不需要背景位置时,我要小心只要应用程序进入后台,就停止我的CLLocationManager更新。
我注意到,通过使用停止按钮停止我在Xcode 7.3中的调试版本,这些应用程序永久停留使用位置服务 - 为了确保GPS未被使用我需要重新启动应用程序然后关闭它们用户的方式。
这是要点:
超级奇怪的部分:
唯一的出路是在我完成工作后重新启动应用程序,然后对其进行后台处理,或者我的手机每小时损失10%的电量。我在运行iOS8和iOS9的设备上看到过这种现象。
其他人都注意到这种行为?或者更重要的是,是否有任何Xcode配置可以避免这种情况?
答案 0 :(得分:0)
我不太清楚为什么不会开始这种行为。要停止重要的位置更新,您必须调用 stopMonitoringSignificantLocationChanges 方法。当您点击Xcode中的停止按钮时,您只需强行终止应用程序,而不执行任何内务代码。这意味着没有人告诉位置管理员停止执行您的应用程序要求它执行的操作,并且当iPhone获得新位置时,它会将您的应用程序启动到后台模式并将该位置读取到该位置。
我怀疑你可以做些什么来改变这种行为,因为它本质上意味着教Xcode如何进行清理,这是针对你的应用程序的。
Re:“状态栏中的小位置图标”
首先,即使箭头是实心的,也不一定意味着应用程序继续使用GPS并积极地耗尽手机电池。此箭头图标与隐私有关,用于告诉用户至少有一个应用可以使用区域监控以外的方法或方法了解位置更改。
请注意,如果以下某项服务处于有效状态,则箭头为实线:
我问你使用哪个位置服务的原因是,最后两个服务将在iPhone重启时恢复,如果你杀了应用程序就不会中断。标准位置更新不会在手机重启时恢复,并会在应用终止时取消。