1

CLLocationManager を使用して GPS データを取得する iOS アプリケーションを開発しています。

ユーザーがホームボタンを押して高速アプリスイッチャーを使用してアプリを強制終了したときにCLLocationManagerを停止する適切な方法は何ですか?

CLLocationManager を停止してから、GPS データのポーリングを停止するにはどうすればよいですか? これを達成するための良い方法を知っている人はいますか?通常、ユーザーがアプリケーションを強制終了すると、コードを実行できません....

編集: アプリケーションをバックグラウンドに送信している場合でも、重要なLocationChangesを取得する必要があるため、アプリケーションがバックグラウンドに送信されたときにCLLocationManagerを停止できません!

4

1 に答える 1

1

AppDelegate には、applicationWillResignActive というメソッドがあります。このメソッドは、アプリがバックグラウンドに送られる直前に実行されます。AppDelegate から CLLocationManager にアクセスできる場合は、その場で停止できます。それ以外の場合は、applicationWillResignActive から通知を投稿し、CLLocationManager を持つクラスがその通知をサブスクライブして、そこから処理できます。

次のような通知を投稿します。

[[NSNotificationCenter defaultCenter] postNotificationName:@"appWillResignActive" object:nil];

そして、次のようにサブスクライブします。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleResign:) name:@"appWillResignActive" object:nil];

次に、次のような方法があります。

- (void)handleResign: (NSNotification *)notification
{
    // stop CLLocationManager
}

編集:アプリが強制終了されているときにコードを実行する場合は、AppDelegate のこのメソッドでそのコードを実行できます。

- (void)applicationWillTerminate:(UIApplication *)application
于 2012-05-05T17:58:48.503 に答える