私は、ユーザーを追跡できるバックグラウンドモードで実行されるアプリケーションを作成しており(バックグラウンドモードで場所を更新することがあります)、リージョンモニタリングを使用して、近くのポイントをユーザーに通知します。リージョンモニタリングからアプリケーションを再起動する機能は使用しません。
現在、applicationWillTerminate:
メッセージを受け取った後、位置情報の更新を停止し、地域の監視からすべてのポイントを削除します。アプリケーションの奇妙な動作に気づきました。マルチタスクメニューでアプリケーションを強制終了しようとすると、次のメッセージが(以下の順序で)アプリケーションに配信されます。
applicationWillTerminate:
applicationDidEnterBackground:
- (時々)もう1つ
locationManager:didUpdateToLocation:fromLocation:
このアプリケーションのバックグラウンドロケーションモードを登録しないと、代わりに強制終了されます。
ユーザーがマルチタスクメニューでアプリケーションを強制終了し、リージョンモニタリングからメッセージを受け取らないようにした後、アプリケーションを他のアプリケーションと同様に終了させたい(とにかくその時点でポイントは追跡されない)。それでも、バックグラウンドロケーションモードを使用できる必要があります。目的は、バッテリーの使用量を最小限に抑えることです。それを達成するために私は何をすべきですか?
また、なぜアプリケーションはapplicationDidEnterBackground:
後に受信するのapplicationWillTerminate:
ですか?マルチタスクメニューからシャットダウンした後も実行中ですか?