最奇怪的事情:即使应用程序没有运行,核心位置也保持活跃状态

时间:2010-07-06 23:38:49

标签: iphone core-location battery

今天下午,我带着我的iPhone 4走进Apple Store,看看他们是否能解决我一直遇到的问题。电池续航时间并不是应有的 - 电池在我的桌子上一夜之间下降了50%。疯。所以我怀疑我有一个屁股单位。发生。没什么大不了的。

我的友好天才在我的手机上稍微戳了一下,并指出位置服务指针在屏幕的右上角点亮。他进入了位置服务设置。他指出,以下应用程序的“过去几个小时内的位置数据”标志点亮:天气频道,放映时间和我写的两个应用程序,距离提交还有几天。

他关闭了每个应用的滑块,我们看到顶角位置服务指针关闭。回到我的应用程序的位置服务使其重新开启,而天气频道或放映时间则不然。但很明显,为我的两个应用程序启用位置服务会激活设备的位置服务。解释了我糟糕的电池寿命,但这只是神秘的开始。

这就是......我的应用程序当时都没有运行。他们甚至没有背景。他们关了。我认为它们目前都在我的设备上的调试配置文件中,并且它们都使用Core Location。他们没有被停职,他们只是一直没有跑步。然而,打开位置服务控制面板中的滑块,它们中的任何一个都会激活位置服务。

那么......这里到底发生了什么?这些应用都没有针对后台位置进行配置。而且......他们不在后台!由于我已经为他们关闭了位置服务,毫无疑问我的电池使用率已经下降了。

1 个答案:

答案 0 :(得分:3)

解决方案是Apple开发人员论坛中的这个主题:https://devforums.apple.com/thread/58063?tstart=0

这两个应用的早期版本都调用了[locationManager startMonitoringSignificantLocationChanges],从未调用stopMonitoring...。即使当前版本的应用程序没有进行该调用,操作系统仍然将“监控请求”“注册”到应用程序(事实上,当我在城里开车时,它们在后台重新启动它们!)。

我不知道的是,监控请求会在启动过程中持续存在 - 并且会重新构建!我认为,就像-startUpdatingLocation一样,监控请求会随着流程而死,但事实并非如此。解决方案是从我的设备中删除应用程序并重新安装。