8

didReceiveMemoryWarningiPadシミュレーターでアプリケーションがバックグラウンド状態にあるときに、ビューコントローラーがメソッドを呼び出さないことに気づきました。具体的にapplicationDidEnterBackgroundは、ログにへの呼び出しが表示され、[メモリ警告のシミュレーション]ボタンを押すと、呼び出しがまったくないことに気付きdidReceiveMemoryWarningます。

ただし、アプリケーションをフォアグラウンドに戻すと、didReceiveMemoryWarningキューに入れられているかのように、突然呼び出しが発生します。

ここで私が混乱しているのは、私のアプリケーションが本当にバックグラウンドにあるのか、それとも完全に中断されているのかということです。シミュレーターで見分ける方法はありますか?

また、まだ一時停止されておらず、実際にバックグラウンドにある場合は、処理できないのはばかげていると思いますdidReceiveMemoryWarning。これは、フォアグラウンドアプリケーションのみがメモリ警告を処理してスペースを解放できることを意味します。これは、フォアグラウンドアプリが、実行中の数十のアプリの1つにすぎないことを考えると、もちろん奇妙なことです。すべてメモリを解放できます。

とにかく、主な質問は次のとおりです。なぜdidReceiveMemoryWarningバックグラウンド状態にならないのですか?また、私は本当に停止されていますか?そして、私はどのように言うのですか?

4

2 に答える 2

8

バックグラウンド タスクを開始していない場合、またはバックグラウンドで VOIP、位置追跡、または音声を実行していない場合、アプリケーションは applicationDidEnterBackground の後に中断されます。通知は受け取りません。通知は保持され (アプリが中断された後に発生したものも含む)、アプリが再びフォアグラウンドに移動したときにアプリに送信されます。

于 2011-05-20T22:22:02.307 に答える
0

そうではないと思います。バックグラウンドでdidReceiveMemoryWarningコードにアクセスできます。システムが善良な市民としてよりも低いメモリ信号を生成したら、メモリを解放する必要があります。これにより、アプリがシステムによって終了するのを防ぐこともできます。

于 2016-01-21T12:26:14.000 に答える