&tag(iPhone,iOS4); *目次 [#uef6e0b5] #contents *参考リンク [#ge2c1260] -[[[iOS4.0] マルチタスク対応 関連資料 - Natsu's iPhone App:http://www.j-love.info/natsu/iphone-app/natsus_note/dev/multitasking_doc_list.html]] *アプリケーションの状態 [#k12e79d0] **状態の種類 [#u52e397a] ,Not running,動いてない ,Inactive,フォアグラウンドで動いてるがイベントを受け付けない状態。長い時間この状態にいるべきではない。 ,Active,動作中。 ,Background,バックグラウンドで動作中。大多数のアプリケーションはsuspendedに移行するちょっとの間この状態になる。追加実行時間を要求するアプリケーションはある期間この状態にとどまる。起動して直接この状態になるアプリケーションもある。iOS4とマルチタスクをサポートしたデバイスで利用可能。もしこの状態が利用できないならアプリケーションは停止しNot runningに移行する。 ,Suspended,アプリケーションはバックグラウンドにありコードを実行していない。システムはアプリケーションをこの状態に自動的に適切な回数移行させる。サスペンド中アプリケーションは状態をフリーズドライさせどのようなコードも実行しない。foregroundアプリケーションのスペースを作るために、低メモリー状態では何の注意もなしにsuspendedアプリケーションを取り除くことがある。suspended状態はiOS4以降とマルチタスクをサポートしたデバイスで利用可能。もしこの状態が利用できない場合アプリケーションは停止し、not runnning状態に移行する。 **状態遷移時に呼ばれるメソッド [#ze8fb44e] [[マルチタスキング対応後のアプリのイベントフローをまとめてみた - A Day In The Life:http://d.hatena.ne.jp/glass-_-onion/20100630/1277909762]]の図がわかりやすい。 :applicationWillEnterForeground|Foregroundになる前に呼ばれる。 :applicationDidBecomeActive:|Backgroundになった後に呼ばれる。 *問題点 [#g7025f5d] -サスペンドするだけのアプリで問題になるのは、データを保存しないままサスペンド→purgeされるパターン?viewWillDisappearで保存してるやつとかだとサスペンド前に呼ばれないのでやばいらしい。 -でも今までだってデータを保存しないまま終了しちゃうアプリはあったのでそこまで神経質にならなくてよいかも。 -まじめにやるならアプリケーションがバックグラウンドの間にロケールが変更された場合の処理とか、キーボードがでてた処理とかいろいろやらないとだめらしい。 *対応 [#abb1ea57] -サスペンドするだけのアプリの場合、データ保存に関して注意する。