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 跟踪用户位置?