8

我创建了一个在 iPhone 上使用定位服务的小应用程序。一切都很好,除了有时,即使我明确杀死应用程序,信息栏中的小箭头也会保持活动状态。我对位置服务使用后台模式,因此 appDelegate 方法applicationWillResignActive、和已实现applicationDidEnterBackground,但不涉及位置服务(嗯 - 我需要它们处于后台模式)。applicationWillEnterForegroundapplicationDidBecomeActive

在该配置applicationWillTerminate中永远不会被调用;我在 中实施了所有清理清理stopUpdatingLocationdealloc因为我没有找到任何其他适合此的地方。但仍然 - 指标保持打开状态。

有任何想法吗?

4

4 回答 4

13

我遇到了同样的问题 - 应用程序在状态栏中保留了位置指示器。

我的问题原来是我最初调用 CCLocationManager 的“startMonitoringSignificantLocationChanges”方法,认为它会提供粗略的位置信息,当我真正需要它时,我可以提高分辨率。

不幸的是,一旦应用程序调用了该方法一次,即使您随后删除该应用程序并重新安装它,它也会始终在状态栏中重新显示图标,直到应用程序调用 CCLocationManager 上的“stopMonitoringSignificantLocationChanges”以从系统中注销自身 -完全痛苦,因为我必须保留该代码,直到它在为我测试我的应用程序的几个人身上整理出来。

因此,如果您的应用程序中出现该图标,请确保您已将任何对“startMonitoringSignificantLocationChanges”的调用与停止调用相匹配。

于 2011-05-11T10:22:23.810 回答
3

如果你开始你的位置经理工作

[MyLocationManagerInstance startMonitoringForSignificantLocationChanges];

那么你需要停止它:

[MyLocationManagerInstance stopMonitoringForSignificantLocationChanges];

如果您强制终止应用程序,则不会调用 applicationWillTerminate,因为从操作系统的角度来看,它显示为 SIGKILL。

于 2011-02-02T17:51:49.560 回答
1

我遇到了类似的问题。这个问题只发生在 iPhone4 上,但在我的 3GS 上完美运行。查看我的代码后,我发现在我的 startUpdatingLocation 方法中,我使用了 startUpdatingLocation 和 startMonitoringForRegion 服务,但是,在我的 stopUpdatingLocation 方法中,我只是停止了 updatesLocation 服务。我也通过关闭 MonitoringForRegion 解决了这个问题。

#pragma mark -
#pragma mark Location methods
- (void)startUpdatingLocation
{

    [self.locationManager startUpdatingLocation];

    [self.locationManager startMonitoringForRegion:desRegion desiredAccuracy:50.0f];
}

- (void)stopUpdatingLocation
{
    [self.locationManager stopUpdatingLocation];

        //  !!!: fix location service indicator stuck issue
    [self.locationManager stopMonitoringForRegion:desRegion];
}
于 2011-06-08T09:55:32.050 回答
0

好的,问题解决了。指示灯将一直亮着,直到找到新位置。然后,如果其他一切都正确,则指示灯将关闭。

于 2011-03-19T17:48:33.730 回答