5

我有一个视图,有一个地图视图的子视图。我使用 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;
    }
4

2 回答 2

2

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

停止监视位置后,只需等待(30-60 秒),然后查看图标是否消失。它应该假设你已经停止了一切。希望这可以帮助。

于 2012-07-09T18:39:37.593 回答
1

我遇到了类似的问题,在这里找到了答案:

是什么决定了状态栏中 iPhone 定位服务图标的存在?

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

于 2013-09-01T20:19:35.580 回答