8

私のアプリケーションでは、ユーザーがホームボタンを押すと、データを に保存しますNSUserDefaults。アプリケーションはバックグラウンドで実行されています。ユーザーがアプリを再起動すると、メソッドを使用しapplicationWillEnterForegroundて保存されたデータを表示します。

ただし、ユーザーがホームボタンをダブルタップし、アプリでマイナス記号を選択してアプリケーションを終了すると、同じユーザーのデフォルトに別のデータを保存する必要があります。しかし、アプリケーションを終了するapplicationWillTerminateと、呼び出される場合と呼び出されない場合があります。

では、アプリケーションが単に最小化されているのか終了しているのかをどのように区別すればよいでしょうか?

4

6 に答える 6

7

ユーザーが 1 回だけタップすると、その時点でアプリケーションがバックグラウンドになり、applicationDidEnterBackgroundが常に呼び出されます。このメソッドでは、NSUserDefaults 値を一時的に更新/保存できます。

場合によっては、ダブルタップを使用して終了せずにアプリケーションが再びフォアグラウンドになる場合、applicationDidBecomeActiveが呼び出され、一時的に保存された NSUserDefaults 値を再度更新/削除できます。また、ユーザーがダブルタップでアプリケーションを終了すると、保存された値は NSUserDefaults に保持されます。

于 2012-05-07T05:37:04.613 に答える
5

メソッドの違いについては、 UIApplicationDelegate プロトコル リファレンスUIApplicationDelegateを参照してください。ホームボタンが押されたときに常に呼び出されます。しかし、それは呼び出されることが保証されていないようです。applicationDidEnterBackground:applicationWillTerminate:

アプリがフォアグラウンドで実行されていない場合は、バックグラウンド モードまたはサスペンド モードのいずれかになります。iOS App Programming Guide - App States and Multitaskingの「The App Launch Cycle」セクションを参照してください。

アプリがバックグラウンドで実行され、イベントを監視しているapplicationWillTerminate:場合、終了時に呼び出されます。アプリが一時停止されている場合は、停止しません。「アプリの終了」セクションの説明を参照してください。

iOS SDK 4 以降を使用してアプリを開発したとしても、通知なしでアプリが強制終了されることに備えておく必要があります。ユーザーは、マルチタスク UI を使用してアプリを明示的に強制終了できます。さらに、メモリが制限されると、システムはメモリからアプリを削除して空き容量を増やすことがあります。中断されたアプリには終了が通知されませんが、アプリが現在バックグラウンド状態で実行されている (中断されていない) 場合、システムはapplicationWillTerminate:アプリ デリゲートのメソッドを呼び出します。アプリは、このメソッドから追加のバックグラウンド実行時間を要求できません。

于 2012-05-07T05:44:26.667 に答える
1

applicationDidEnterBackground - ユーザーがホームボタンを押すと、その時点でアプリケーションがバックグラウンドに移行するたびに、applicationDidEnterBackground メソッドが呼び出されます。ユーザーがホームボタンを押すか、別のアプリケーションに切り替えてアプリケーションを最小化するたびに呼び出されます。

applicationWillTerminate - アプリケーションのプロセスが実際に強制終了された場合にのみ呼び出されます。つまり、ユーザーがタスク スイッチャーの赤いマイナス クローズ ボタンを使用してそれを強制終了するか、システム自体がバックグラウンドで (たとえば、メモリ不足の状態で) 強制終了します。アプリは、このメソッドから追加のバックグラウンド実行時間を要求できません。

于 2012-05-07T05:47:34.657 に答える
1

applicationDidEnterBackground - このメソッドは、ユーザーがホーム ボタンを押してアプリケーションをバックグラウンドに設定したときに呼び出されます。

applicationWillTerminate - このメソッドは、ユーザーが赤いマイナス ボタンを押してバックグラウンド モードのアプリを終了したときに呼び出されます。

于 2012-05-07T06:35:37.997 に答える
0

applicationWillTerminateアプリケーションのプロセスが実際に強制終了された場合にのみ呼び出されます。つまり、ユーザーがタスクスイッチャーの赤いマイナスの閉じるボタンを使用してそれを強制終了するか、システム自体がバックグラウンドで(たとえば、メモリ不足の状態で)それを強制終了します。

あなたのニーズのために、applicationDidEnterBackgroundが好まれます。ユーザーがホームボタンを押すか、別のアプリケーションに切り替えることによってアプリケーションを最小化するたびに呼び出されます。

于 2012-05-07T05:37:33.327 に答える
0

アプリケーションがバックグラウンド実行をサポートしている場合、このメソッドは通常、ユーザーがアプリケーションを終了したときに呼び出されません。その場合、アプリケーションは単純にバックグラウンドに移動するためです。

保存する必要があるデータがある場合は、アプリがバックグラウンドになったときに保存する必要があります。

于 2012-05-07T05:36:27.747 に答える