2011-07-05 6 views

答えて

1

のiOS 4.xの上のより良いオプションは、Appleのドキュメントによると、実際にapplicationDidEnterBackground:

で、バックグラウンドでアプリケーションがメモリ不足の状態にいつでも終了することができます。したがって、この提案は、アプリがバックグラウンドに入る瞬間の状態情報を永続的にしています。

UIApplicationDelegate protocolからの抜粋:

あなたはそれは場合には、現在の状態にアプリケーションを復元するために、共有リソースを解放し、ユーザーデータを保存し、タイマーを無効にし、十分なアプリケーションの状態情報を保存するために、このメソッドを使用する必要があります後で終了する。また、アプリケーションのユーザーインターフェイスの更新を無効にし、一部の種類の共有システムリソース(ユーザーの連絡先データベースなど)の使用を避ける必要があります。バックグラウンドでOpenGL ESを使用しないようにすることも不可欠です。

このメソッドの実装には、タスクを実行して戻るまでに約5秒かかります。あなたは追加の時間が必要な場合は...

+0

できるだけ早く保存してください。上のセルジオのように、applicationDidEnterBackgroundで任意のタスクを実行するのに5秒しかかかりません。 – amergin

0

またapplicationWillTerminate Appleのドキュメントから:バックグラウンド実行をサポートしていないまたはiOS 3.xまたはそれ以前のに対してリンクされているアプリケーションについては

、このメソッドは常にありますユーザーがアプリケーションを終了するときに呼び出されます。バックグラウンド実行をサポートするアプリケーションでは、アプリケーションがバックグラウンドに移動するだけなので、ユーザーがアプリケーションを終了するときにこのメソッドは一般に呼び出されません。ただし、このメソッドは、アプリケーションがバックグラウンドで実行されていて(中断されていない)、システムが何らかの理由で終了する必要がある状況で呼び出されることがあります。したがって

あなたは、特にアプリのバックグラウンド化や、あなたが同様の状況をキャッチするために両方の場所(applicationWillTerminateとapplicationWillEnterBackground)に永続化する検討すべきであるのiOS 3.xのに対してリンクをサポートしないことを要求した場合。

+0

すごい、ありがとう!もう1つの簡単な質問(新しいスレッドを開始したくない) - 私はビューコントローラに持っているがグローバルではない配列をファイルにダンプしようとしています。それをアプリデリゲートにどのように渡すことができますか?私はオブジェクトを渡すことについてここでいくつかの場所を読んだが、どれもこのケースに似ていませんでした。ありがとう! – TommyG

+0

なぜあなたはそれをあなたのアプリケーションデリゲートに渡す必要がありますか?コードをリファクタリングし、データの永続性を扱うクラスを作成することでメリットがあるようです。本当にあなたが(私が避ける)アプリケーションデリゲートを使用したいなら、 '[[UIApplication sharedApplication] delegate]'で参照を取得し、永続化メソッドを呼び出して配列を渡すだけですか? –

+0

私はアプリデリゲートの使用も避けたいと思っていますが、最終的にはアプリのデリゲートでしかアプリが終了していないことを知ることができますすべてのデータストレージを扱うクラスを作成する方が良いと思いますが、いつファイルにダンプしますか?ありがとう!! – TommyG

関連する問題