3

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

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

他关闭了每个应用程序的滑块,我们看到顶角位置服务指针关闭。为我的任何一个应用重新打开位置服务会使其重新打开,而天气频道或 Showtimes 并非如此。但很明显,为我的两个应用打开定位服务会启动设备的定位服务。解释了我糟糕的电池寿命,但这只是谜团的开始。

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

所以...这里到底发生了什么?这些应用程序均未针对后台位置进行配置。而且……他们不在后台!而且由于我已经为他们关闭了定位服务,毫无疑问我的电池使用量正在下降。

4

1 回答 1

3

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

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

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

于 2010-07-07T18:17:04.500 回答