2 利用すべきメソッドの検討
先ほどおこなった実験から考えると落書きアプリケーションのような場合は、描きかけの画像を保存するタイミングは-applicationWillResignActive:か-applicationDidEnterBackground:が呼ばれた時が適切ということになります。
そして保存した画像を読み込むタイミングの方は、-applicationWillEnterForegroundでも-applicationDidBecomeActiveでもなく、あらためて起動された場合にだけ呼び出されるapplication:didFinishLaunchingWithOptions:が適切(それ以外の時は画像はメモリ上に保持されている)となります。
2.1 画像を保存するために利用すべきメソッド
では、画像を保存するために利用すべきメソッドは、-applicationWillResignActive、あるいは-applicationDidEnterBackgroundのどちらが適切なのでしょうか?
Appleのドキュメント「iOSアプリケーションプログラミングガイト」の「アプリケーションの状態遷移を扱う戦略」には、状態遷移に関する非常に詳しい説明がありますが、ここから読み取れる事は、-applicationWillResignActive:が呼ばれた後に、必ずしもバックグラウンドへ移行するわけではないという事です。
例えば、通知センターが画面の上端から引き出される時には、-applicationWillResignActive:が呼び出されます。ここでもしユーザーが通知センターで別アプリの起動を選んだ場合、引き続き-applicationDidEnterBackground:が呼び出され、バックグラウンド動作に入るのですが、通知センターを閉じれば、代わりに-applicationDidBecomeActive:が呼び出され、アプリは再びユーザーと対話できるようになります。
このような動きをする事か
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録