2012-04-29 3 views
1

私はstartMonitoringSignificantLocationChangesを使用するアプリを持っています。iOSロケーションサービスは、タスクバーでの殺害の後でもアプリで使用されています

これがオンになっている場合は、右上の紫色の矢印が表示されます。

私はいくつかのテストを行っていますが、時折stopMonitoringSignificantLocationChangesを呼び出すことがあります。

この場合、Xcodeでアプリを終了しても、紫色の矢印が引き続き表示されます。私はSettings.app - > Location Servicesに行き、紫色の矢印が私のアプリの横にも点灯しているのを見て、それがまだそれを使用していることを意味する。 これは、Xcodeをデバイスに接続せずに実行していても、マルチタスキングバーからアプリを終了した後でも実行されます。

これはどのようにすることができますか?

アプリを強制終了しないと、大幅な位置変更の監視が停止するはずですか?

これは明らかに5.1で起こっています... 5.0ではテストされていません。

答えて

3

バックグラウンド/終了の前にstopMonitoringSignificationLocationChangesに電話することは確実ですか?

CLLocationManagerのためのドキュメントでかいま見を取る - これはおそらく、あなたに重要な部分である:

あなたがこのサービスを開始し、アプリケーションがその後に終了した場合場合、システムが自動的にバックグラウンドにアプリケーションをrelaunches新しいイベントが到着します。

終了時に(application:didFinishLaunchingWithOptions:)のデータを処理する方法については、いくつかかなり詳細があります。

+0

私の元の質問以来、私はもはやロケーションサービスバックグラウンド処理フラグを使用しないように書き直しました。使用しているときは[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(){}]; アプリは何かをするのに最大10分かかります。それは私が場所の更新について知る必要がある限りです。 しかし、私のexpirationHandlerが次の2行を持っていても、アプリはまだ止まらないことがあります。 [self.locationManager stopMonitoringSignificantLocationChanges]; [self.locationManager stopUpdatingLocation]; 他のアイデアはありますか? –

5

私もこの問題を抱えていましたが、重要な場所の変更を監視していませんでした。これは、CLLocationManagerを使用して、Xcodeの属性の下にユーザーの場所を表示するようにマップビューを設定していました。 [locationManager stopUpdating]と言うと、私のロケーションマネージャはメッセージの送信を停止しましたが、マップビューからのメッセージはa'cominに保存されました。私がMap View [mapView setShowUsersLocation:NO]にそれをやめることを伝えるまではなかった。あなたがMapKitを使っているのであれば最初の投稿からはわかりませんが、もしそうなら、私はこれをそこに投げ捨てると思っていました。

+0

良好な観察。私はMapKitを使用していません(少なくともこれをテストするときではありません)が、これは間違いなくその問題を引き起こす可能性があります。 –

+0

それは私の問題を解決しました、ありがとう。私はより慎重にドキュメントを読む必要があります。 – Alexander

+0

この現象はバグのようです。何かご意見は?バッテリーの消耗は気にしませんでしたが、ステータスバーの位置情報サービスアイコンは消えません。 – brynbodayle

関連する問題