我已经在我的许多视图控制器中实例化了 locationManager。为了节省电池,我想阻止 locationmanager 更新位置,所以我想在我的 VC 中调用 viewDidUnload 内的 stopUpdatingLocation,但在 ios6 中不推荐使用 viewDidUnload。有没有一种干净的方法可以让我停止所有更新位置?
谢谢!强
我已经在我的许多视图控制器中实例化了 locationManager。为了节省电池,我想阻止 locationmanager 更新位置,所以我想在我的 VC 中调用 viewDidUnload 内的 stopUpdatingLocation,但在 ios6 中不推荐使用 viewDidUnload。有没有一种干净的方法可以让我停止所有更新位置?
谢谢!强
您可以使用 UIApplicationDelegate 方法:
- (void)applicationWillResignActive:(UIApplication *)application
在此方法中,您可以调用 stopUpdatingLocation。
停止更新位置
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//stop updating Location
}
较早的答案建议stopUpdatingLocation
从applicationWillResignActive
. 更好的解决方案是改为拨打电话applicationDidEnterBackground
。
我发现调用stopUpdatingLocation
fromapplicationWillResignActive
会导致询问用户是否允许使用该位置的警报在用户可以点击任何内容之前立即消失。
这是因为applicationWillResignActive
在出现权限对话框时调用。这将stopUpdatingLocation
在 之后立即调用startUpdatingLocation
,导致对话框立即消失。