我有一个带有地图视图子视图的视图。我使用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;
}
答案 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?
我的案例(正在开发中)的解决方案是重置位置警告(设置>常规>重置>重置位置警告)