iOS:LocationManager 更新,何时停止更新?

Posted

技术标签:

【中文标题】iOS:LocationManager 更新,何时停止更新?【英文标题】:iOS: LocationManager updates, when to stop updating? 【发布时间】:2014-03-10 12:42:02 【问题描述】:

我有一个视图控制器,它通过接收更新来查询 LocationManager 的位置。对于 Google Places 搜索,我只需要该位置一次。有一个分段控件,让用户可以选择是要使用当前位置还是输入地址。 现在,我担心停止更新。 假设用户打开视图控制器。最初,分段控件设置为“输入地址”。一旦用户点击它切换到“当前位置”,我就会开始接收位置更新。 这工作正常。如果用户关闭视图控制器,我会停止更新。 但是,如果用户按下主页按钮并执行其他一些任务会发生什么?视图控制器进入后台并且仍然会收到我不想要的更新。在这种情况下,我希望更新停止,一旦用户再次将视图控制器带入前台,更新应该再次启动。

[self.locationManager stopUpdatingLocation];[self.locationManager startUpdatingLocation];放在哪个生命周期方法中?

【问题讨论】:

尝试使用applicationDidEnterBackground: 在 plist 文件中禁用后台模式:“应用注册位置更新” @shtefane 一旦应用进入前台,视图控制器会自动开始接收位置更新吗? 【参考方案1】:

将代理 CLLocationManagerDelegate 添加到您的代理文件中。

然后在AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    //create new CLLocationManager
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;

    return YES;



- (void)applicationDidEnterBackground:(UIApplication *)application

    [locationManager stopUpdatingLocation];


- (void)applicationDidBecomeActive:(UIApplication *)application

    [locationManager startUpdatingLocation];

然后在您的View 文件中,您可以根据需要处理它。

【讨论】:

以上是关于iOS:LocationManager 更新,何时停止更新?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9 - LocationManager 更新位置过于频繁

iOS LocationManager 未更新位置(Titanium Appcelerator 模块)

何时使用 LocationManager/LocationListener VS。 LocationServices/LocationCallback 跟踪用户位置?

iOS蓝色状态栏同时使用地理围栏/背景位置更新来触发通知

iOS之获取经纬度并通过反向地理编码获取详细地址

何时在 iOS 7 中使用 AutoLayout 更新约束