即使在CLLocationManager上显式调用stopUpdatingLocation后,状态栏上的位置服务指示器仍会显示

时间:2012-06-13 18:36:03

标签: ios mkmapview cllocationmanager statusbar

我有一个带有地图视图子视图的视图。我使用CLLocationManager获取当前位置并在地图上显示。然后当视图即将关闭时,我会执行以下操作

_mapView.delegate = nil;
_mapView = nil;

[_locationManager stopUpdatingLocation];
_locationManager.delegate = nil;
_locationManager = nil;

但状态栏上的位置服务(GPS)指示灯仍然保持不变。当应用程序进入后台然后返回前台时,它会等待指示器显示在状态栏上,然后才能激活。

该指标仍然存在的原因是什么?

编辑 - 以下是CLLocationManager的初始化和启动方式

    if (_locationManager == nil) {
        _locationManager = [[CLLocationManager alloc] init];
        _locationManager.delegate = self;
        _locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
        _locationManager.distanceFilter = kCLDistanceFilterNone;

        [_locationManager startUpdatingLocation];
    }  

以下是我如何阻止它

    if (_locationManager != nil) {
        [_locationManager stopUpdatingLocation];
        _locationManager.delegate = nil;
        _locationManager = nil;
    }

2 个答案:

答案 0 :(得分:2)

正如位置工程师在WWDC上所解释的那样,图标会保留在右上角一段特定的时间,具体取决于上次使用的服务。我相信一旦你停止使用位置[locationManager stopUpdatingLocation],计时器就会在图标消失之前开始。一些服务更长。他们没有详细说明这些计时器有多长。我知道他们在iOS 6中会变得更长。

一旦停止监控位置,只需等待(30-60秒),看看图标是否会掉落。应该假设你已经停止了一切。希望这会有所帮助。

答案 1 :(得分:1)

我遇到了类似的问题并在此找到了答案:

What determines the presence of the iPhone Location Services icon in the status bar?

我的案例(正在开发中)的解决方案是重置位置警告(设置>常规>重置>重置位置警告)