1

私のアプリケーションは NSUserDefaults を使用していくつかの値を保存し、アプリケーションの更新時またはバックグラウンド処理が終了した場合に値を復元できるようにします。バックグラウンド処理は整数値を自動的に保存しますが、ユーザーがランチャーからアプリケーションを終了すると、数値も失われ、バックグラウンド処理に入るときに ViewDidUnload メソッドが呼び出されないと思います。アプリケーションがアンロードされるたびに NSUserDefaults を保存できる方法はありますか? また、ViewDidLoad メソッドにも同じ問題があり、バックグラウンドからは呼び出されません。これを回避する方法は何ですか?

PS これまでのところ、アプリケーションが保存する必要がある唯一のデータは、画面上のカウントの int です。

更新: UIApplicationDidEnterBackgroundingNotification は、あなたの提案でうまく機能します!

4

2 に答える 2

1

スプリングボードから起動された場合、アプリのデリゲートは同じ一連のイベントを取得するため、アプリがバックグラウンドから起動されたかどうか、少なくとも現在の設定方法はわかりません。

Joost が言うように、状態を復元するために必要なものはすべて applicationDidEnterBackground コールバック内に保存する必要があります。基本的に、これは、アプリが邪悪なプロセス リーパーによって容赦なく殺される前に受け取る最後のメッセージであると想定する必要があります。

詳細な説明については、 WWDC 2010 セッション ビデオ、具体的には セッション 105 - iPhone OS でのマルチタスキングの採用、パート 1 をチェックしてください。

于 2010-07-14T06:14:06.313 に答える
1

最終的に強制終了される直前にデータを保存することはできませんが、「万一に備えて」状態をapplicationDidEnterBackground: app デリゲートに保存できます。

applicationDidBecomeActive: もありますが、そこからセーブ データをロードする理由はありません。バックグラウンドにあったアプリから呼び出された場合、データは何らかの形で保持されているからです。

于 2010-07-14T06:03:52.557 に答える