3

iOS 5/6でapplicationWillTerminateがいつ/どのような条件で呼び出されるかについての洞察はありますか?

たとえば、ユーザーがホームボタンをダブルタップして画面下部のアプリケーションバーに移動し、強制終了した場合など、アプリケーションが終了するたびに実行したいロジックがあります (バックグラウンドに移動しません)。アプリ。

テスト デバイスでこれを実行しようとすると、applicationWillTerminate が呼び出されないようです。これには理由がありますか?

私の計画 B は、そのロジックを、アプリの終了時に自動的に破棄されるシングルトンや静的オブジェクトなどの永続オブジェクトに結び付けることです。

助言がありますか?

ありがとう

4

1 に答える 1

8

applicationWillTerminateのドキュメントを読んだことがありますか

それは言う、

バックグラウンド実行をサポートしていないアプリケーション、またはiOS 3.x以前に対してリンクされているアプリケーションの場合、このメソッドは、ユーザーがアプリケーションを終了したときに常に呼び出されます。バックグラウンド実行をサポートするアプリケーションの場合、アプリケーションがバックグラウンドに移動するだけなので、ユーザーがアプリケーションを終了するときにこのメソッドは通常呼び出されません。ただし、このメソッドは、アプリケーションがバックグラウンドで実行されており(一時停止されていない)、システムが何らかの理由でアプリケーションを終了する必要がある場合に呼び出されることがあります。

そこには「たぶん」という言葉があります。おそらくそれはあなたの質問に答えます。したがって、アプリを終了したときにこれが呼び出される必要はありません。おそらく、UIApplicationExitsOnSuspendマルチタスクを無効にするために使用する必要があるかもしれません、そしてそれからそれはバックグラウンドに置いている間に呼び出されるかもしれません。ただし、これもアプリの要件によって異なります。マルチタスクを無効にできない場合は、applicationDidEnterBackgroundメソッドなどで無効にすることを検討してください。強制終了を識別するのに役立つ他のデリゲートメソッドがあるかどうかはわかりません。

于 2012-11-14T20:13:17.003 に答える