7

Xcodeバージョン4.2.1とiOS5.0のプロジェクトに取り組んでいます。アプリケーションを完全に終了すると、どの関数が呼び出されるのでしょうか。つまり、ユーザーがバックグラウンドで実行されているアプリをホーム画面から強制的に終了させた場合でも同様です。私はそれを仮定していました

(void)applicationWillTerminate:(UIApplication *)application

呼び出されますが、バックグラウンドでアプリを終了した後も呼び出されないことが判明しました。基本的にやりたいのは、アプリが完全に終了する直前に作成したメソッドを呼び出すことなので、アプリの最後にどの関数が呼び出されるかを知る必要があります。

ありがとうございました。

4

5 に答える 5

6

ここでは、iOS 4.0 以降でのアプリケーション ライフサイクル通知とデリゲート メッセージの概要を説明します。要するに...

通常、システムはアプリが (バックグラウンドで) 既に一時停止されている場合にのみ終了するため、アプリは通常willTerminateを認識しません。アプリが一時停止されると、それ以上行動する機会がなくなるため (*)、そのためのコールバックはありません。

didEnterBackgroundデリゲート メッセージまたは通知は、終了の可能性がある前にクリーンアップまたは状態を保存する最後のチャンスと見なす必要があります


(*) さて、オーディオ、VoIP、またはナビゲーションなど、サポートされているバックグラウンド実行モードのいずれかである場合、アプリは何かを実行できますが、その場合、まだ中断されていないか、エントリで中断が解除されています。その背景モードに固有のポイント。

于 2012-04-17T23:29:44.857 に答える
2

アプリがすでに一時停止されている場合、それ以上の通知は受信されません。didEnterBackground通知に注意してください。

于 2012-04-17T23:15:36.270 に答える
0

ここのドキュメントは、この場合の動作を詳しく説明しています。

applicationWillTerminate:つまり、アプリが終了したときにアプリが(フォアグラウンドまたはバックグラウンドで)実行されている場合にのみメッセージを受信します。そのため、アプリがフォアグラウンドまたは長時間実行されるバックグラウンドモード(VoIP、オーディオ、またはで示される長時間実行タスクなど)のいずれかで実行されていない限り、アプリは状態から状態にかなり迅速にbeginBackgroundTaskWithExpirationHandler移行します。この場合、メッセージを受信することはありません。backgroundsuspendedapplicationWillTerminate:

于 2012-04-17T23:28:07.150 に答える
0
- (void)applicationWillTerminate:(UIApplication *)application

UIApplicationDelegateプロトコルにあります。

于 2012-04-17T23:16:15.890 に答える