多くのView ControllerでlocationManagerをインスタンス化しました。バッテリーを節約するために、ロケーションマネージャーがロケーションを更新するのを止めたいので、VC の viewDidUnload 内で stopUpdatingLocation を呼び出すことを考えていましたが、ios6 では viewDidUnload が非推奨になりました。すべての更新場所を停止するクリーンな方法はありますか?
ありがとう!クオン
多くのView ControllerでlocationManagerをインスタンス化しました。バッテリーを節約するために、ロケーションマネージャーがロケーションを更新するのを止めたいので、VC の viewDidUnload 内で stopUpdatingLocation を呼び出すことを考えていましたが、ios6 では viewDidUnload が非推奨になりました。すべての更新場所を停止するクリーンな方法はありますか?
ありがとう!クオン
UIApplicationDelegate メソッドを使用できます。
- (void)applicationWillResignActive:(UIApplication *)application
このメソッド内で stopUpdatingLocation を呼び出すことができます。
場所の更新を停止します
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//stop updating Location
}
stopUpdatingLocation
以前の回答では、からの呼び出しが提案されていましapplicationWillResignActive
た。applicationDidEnterBackground
より良い解決策は、代わりにから電話をかけることです。
stopUpdatingLocation
から呼び出すapplicationWillResignActive
と、ユーザーが何かをタップできるようになる直前に、その場所を使用する許可をユーザーに求めるアラートが消えることがわかりました。
これはapplicationWillResignActive
、権限ダイアログが表示されたときに が呼び出されるために発生します。stopUpdatingLocation
これは の直後に呼び出されstartUpdatingLocation
、ダイアログがすぐに消えます。