iphone - 有史以来最奇怪的事情 : Core Location staying active even when app is not running

标签 iphone core-location battery

今天下午,我带着 iPhone 4 走进 Apple Store,看看他们是否可以帮助解决我一直遇到的问题。电池续航时间根本没有达到应有的水平——放在办公 table 上一晚上电池电量下降了 50%。疯狂的。所以我怀疑我有一个流浪汉单位。发生。没什么大不了的。

我友好的天才在我的手机上看了一会儿,并指出位置服务指针在屏幕右上角亮起。他进入位置服务设置。他指出,以下应用程序的“在过去几个小时内获取位置数据”标志亮起:天气 channel 、Showtimes 以及我编写的两个应用程序,距离提交还有几天。

他关闭了每个应用程序的 slider ,我们看到顶部角落的位置服务指针关闭。重新打开我的任何一个应用程序的位置服务都会使其重新打开,但天气 channel 或 Showtimes 的情况并非如此。但很明显,为我的两个应用程序打开位置服务会启动设备的位置服务。我糟糕的电池生命周期得到了解释,但这只是谜团的开始。

事情是这样的......当时我的两个应用程序都没有运行。他们甚至没有背景。他们关了。我认为它们目前都内置在我设备上的调试配置文件中,并且它们都使用 Core Location。他们没有被暂停,他们只是平躺着,没有运行。然而,打开位置服务控制面板中的 slider 通常会启动位置服务。

所以...这里到底发生了什么?这些应用程序都没有配置后台位置。而且......他们不在后台!由于我已经关闭了它们的定位服务,毫无疑问我的电池使用量大大降低了。

最佳答案

解决方案位于 Apple 开发者论坛的这个帖子:https://devforums.apple.com/thread/58063?tstart=0

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

我不知道的是,监控请求在启动和重建过程中仍然存在!我假设,像 -startUpdatingLocation 一样,监视请求会随着进程而终止,但事实并非如此。解决方案是从我的设备中删除应用程序并重新安装。

关于iphone - 有史以来最奇怪的事情 : Core Location staying active even when app is not running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3190966/

相关文章:

iphone - UIButton - 编程创建问题

iphone - iOS CoreLocation 仅在美国无法通过 3G 运行

iphone - 如何处理iPhone游戏过程中弹出的 'Low Battery'

ios - 在 iOS 上获取电池健康信息

iphone - NSValue 到 NSNumber 转换崩溃

iphone - 实例变量在 iOS 应用程序中不返回值

iphone - 在 iPhone 上录制自定义覆盖

iOS Swift 将 GPS 坐标存储到数组中

ios - 无法让 MapView 放大当前位置 - SWIFT

安卓电池分析。计算电池循环