即使应用程序被杀死,位置服务也不会停止

Posted

技术标签:

【中文标题】即使应用程序被杀死,位置服务也不会停止【英文标题】:Locationservices dont stop even when app is killed 【发布时间】:2012-08-08 05:24:06 【问题描述】:

我有一个应用程序在后台和前台 Mapkit 中使用 CLLocationManager 来显示用户位置。我没有激活 BackgroundModes。因此,如果我的应用程序进入后台,我将停止使用 [mapview setShowsUserLocation:NO] 显示用户位置。在 appDelegate 中,我启动 LocationManager 并每隔 30 秒使用 [locationManager startUpdatingLocation] 和 [locationManager stopUpdatingLocation] 停止它(此时无需担心电池耗尽)以在后台获取用户位置。因此,可以说 locationManager 开启 5 秒,关闭 25 秒。这 25 秒位置服务指示灯应该会消失,对吧?但事实并非如此。即使我没有告诉 LocationManager 启动,指示器也一直存在。杀死该应用程序无济于事,只会在设置中关闭位置服务。但是如果我重新打开它,那么指示器将一直在那里。

我在不同的帖子中尝试了所有内容,即使是在这些帖子中: Locationservice Indicator stays "on" Location services don't stop when application is terminated

而且我永远不会调用 locationManager=nil 或释放它。 太疯狂了..大家可以帮帮我吗?


更新:所以这让我非常抓狂。几天以来一直坚持这一点。并且只在我真正的 iPhone 上测试过。现在我在 iPad 和 iPhone 模拟器上进行了尝试,在这两种设备上都符合我的预期:当应用程序处于后台时,指示灯亮起 5 秒,指示灯熄灭 25 秒。那么这是我真实手机上的错误还是有人有一些建议?我有 5.1.1 和越狱,但这不应该影响它!?

感谢您的帮助:)

【问题讨论】:

当应用程序在后台时,是否还有其他可能导致此位置指示器的原因?因为我在整个项目中搜索了其他 LocationManager,但我只在 AppDelegate 中使用它。没有更多的想法是哪里出了问题:-( 没人?问题依然存在!目前没有其他设备可以测试它,只有我的 iPhone... 【参考方案1】:

好的,我刚刚想通了。 This Post 帮助了我。

“从您的 ios 设置中选择常规 | 重置 | 重置位置警告。这会将警告重置到所有应用程序。这意味着下次启动需要位置的应用程序时,iOS 将提示您位置权限对话框。从操作表中选择“重置警告”。”

我调用了几次,然后它按我预期的方式工作(并且它一直在模拟器中工作):-)!现在我可以考虑耗尽电池等...

【讨论】:

以上是关于即使应用程序被杀死,位置服务也不会停止的主要内容,如果未能解决你的问题,请参考以下文章

当隔离被杀死时,颤振隔离内的计时器不会停止

为啥即使我在后台请求位置更新,我的 iOS 应用程序也会被杀死?

每当应用程序被杀死时服务停止

即使在最近的抽屉中杀死应用程序后,也可以使用服务获取连续的位置

如何确保在应用程序关闭时运行的服务不会被杀死?

Firebase 云消息服务 - 即使应用程序被杀死也能接收通知