8

iPhone で位置情報サービスを使用する小さなアプリを作成しました。アプリを明示的に強制終了しても、情報バーの小さな矢印がアクティブなままになることがあるという事実を除いて、すべてがうまく機能します。私は位置情報サービスにバックグラウンド モードを使用しているため、appDelegate メソッドapplicationWillResignActiveapplicationDidEnterBackgroundapplicationWillEnterForegroundおよびapplicationDidBecomeActiveが実装されていますが、位置情報サービスには触れていません (まあ、バックグラウンド モードで必要です)。

その構成applicationWillTerminateでは、呼び出されることはありません。これに適した場所が他に見つからなかったので、すべてのクリーンアップ クリーンアップを のように実装しましstopUpdatingLocationた。deallocそれでも - インジケーターはオンのままです。

何か案は?

4

4 に答える 4

13

私は同じ問題を抱えていました-アプリはステータスバーの位置インジケーターをオンのままにします。

私の問題は、最初に CCLocationManager の「startMonitoringSignificantLocationChanges」メソッドを呼び出して、本当に必要なときに解像度を上げることができる大まかな位置情報が得られると考えていたことであることが判明しました。

残念ながら、アプリがそのメソッドを一度呼び出すと、アプリを削除して再インストールしても、アプリが CCLocationManager で 'stopMonitoringSignificantLocationChanges' を呼び出してシステムから自身を登録解除するまで、常にステータス バーにアイコンが再表示されます -私のために私のアプリをテストしていた何人かの人々にそれが整理されるまで、そのコードを残しておかなければならないので、完全な痛み.

そのため、アプリでそのアイコンが動かなくなった場合は、「startMonitoringSignificantLocationChanges」への呼び出しと停止呼び出しが一致していることを確認してください。

于 2011-05-11T10:22:23.810 に答える
3

でロケーションマネージャーの仕事を始めた場合

[MyLocationManagerInstance startMonitoringForSignificantLocationChanges];

次に、次の方法で停止する必要があります。

[MyLocationManagerInstance stopMonitoringForSignificantLocationChanges];

アプリケーションを強制終了した場合、OS の観点からは SIGKILL として表示されるため、applicationWillTerminate は呼び出されません。

于 2011-02-02T17:51:49.560 に答える
1

同様の問題に遭遇しました。この問題は iPhone4 でのみ発生しますが、私の 3GS では問題なく動作します。コードを調べたところ、startUpdatingLocation メソッドで startUpdatingLocation サービスと startMonitoringForRegion サービスを使用していることがわかりましたが、stopUpdatingLocation メソッドでは updatesLocation サービスを停止するだけです。MonitoringForRegion もオフにすることで、この問題を修正しました。

#pragma mark -
#pragma mark Location methods
- (void)startUpdatingLocation
{

    [self.locationManager startUpdatingLocation];

    [self.locationManager startMonitoringForRegion:desRegion desiredAccuracy:50.0f];
}

- (void)stopUpdatingLocation
{
    [self.locationManager stopUpdatingLocation];

        //  !!!: fix location service indicator stuck issue
    [self.locationManager stopMonitoringForRegion:desRegion];
}
于 2011-06-08T09:55:32.050 に答える
0

わかりました、問題は解決しました。インジケータは、新しい場所が見つかるまで点灯し続けます。その後、他のすべてが正しければ、インジケータはオフになります。

于 2011-03-19T17:48:33.730 に答える