iOS4でマルチタスキングを実現するときの注意点まとめ

iOS4ではいよいよマルチタスキングを実現できるようになったわけですが、開発者にとっては注意しなければならないことが圧倒的に多くなったのも事実です。 個人的に調べたときの呟きメモ、それにTL上で気になった情報をまとめましたので、参考にしてみてください。 補足などはぜひコメントへ!!
38
narumij @narumij

あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?

2010-06-27 05:20:03
marvelph @marvelph

!!! RT @narumij: あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?

2010-06-27 08:29:52
Hirohito Kato ⌘ @hkato193

アプリ側の責任ですね。キーボードの切り替えも。 RT @marvelph: !!! RT @narumij: あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?

2010-06-27 08:33:42
Hirohito Kato ⌘ @hkato193

補足です。HIG( http://bit.ly/bWUjV6 )によれば「編集中状態などであれば終了させておくべき」とのことです。 RT @marvelph: !!! RT @narumij: あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?

2010-06-27 08:42:38
Hirohito Kato ⌘ @hkato193

アプリがバックグラウンドに入る場合は、これまでwillTerminateで呼んでいた保存処理を呼んでおかないと。そのときのdelegateメソッドはapplicationDidEnterBackground:

2010-06-27 08:59:05
Hirohito Kato ⌘ @hkato193

バックグラウンド時にメモリ警告をシミュレートしてみたけれど、applicationDidReceiveMemoryWarning:は呼ばれなかった。うむむ、安易な実装で「iOS4対応」っていうのは憚れるなあ。

2010-06-27 09:14:43
Hirohito Kato ⌘ @hkato193

バックグラウンドにした後は、Application Delegateが殆ど来ていない。そうなるとデータ保存のタイミングは applicationWillTerminate:だけでは絶対に駄目か。

2010-06-27 09:23:03
Hirohito Kato ⌘ @hkato193

バックグラウンド化で呼ばれるデリゲートメソッドはapplicationWillResignActive:とapplicationDidEnterBackground:の2つだけど、データ保存のタイミングは後者。なぜならホームボタン2度押しでも前者が呼ばれるから

2010-06-27 09:26:10
Hirohito Kato ⌘ @hkato193

一方UIViewControllerはというと、viewWillDisappear:はバックグラウンドに回るときも、ホームボタン2度押しでも呼ばれなかった。まだ検証不足だけれど、アプリケーションの動作状況に影響は受けない、ということかな。

2010-06-27 09:32:22
Hirohito Kato ⌘ @hkato193

マルチタスキング怖いよー。

2010-06-27 09:32:33
Hirohito Kato ⌘ @hkato193

マルチタスキングを掌中に収めるまではUIApplicationExitsOnSuspendをTRUEにしておくのが吉だと思った。使っていただく方に迷惑をかけかねないし、そもそもマルチタスキングの必要性があるケースは少ない。

2010-06-27 09:38:18
Hirohito Kato ⌘ @hkato193

あ、でも自分のアプリはマルチタスキングに対応させる予定ですので、どうぞあしからず。

2010-06-27 09:40:00
marvelph @marvelph

日時をリスト表示してたりする場合は、ビューがアンロードされていなくても表示の度にリロードする必要がありそうですね。RT @shiki_hellkite: アプリ側は考える事が増えそうですね。 RT @hkato193 アプリ側の責任ですね 。キーボードの切り替えも。 …

2010-06-27 10:03:37
iphone_dev_jp @iphone_dev_jp

iOS4 のアプリケーションの状態遷移をまとめてみました。http://bit.ly/cHtbIY [@ytka]

2010-06-27 13:16:03
Kazuyuki Imada @kimada

[iPhone技術情報][iOS4][SysStats Monitor][SysStats Lite]iOS4でバックグラウンド化されているアプリを確認する方法 http://bit.ly/bBVzD5

2010-06-27 20:07:20
Kazuyuki Imada @kimada

@tYabee blogで、記事とアプリのご紹介いただきありがとうございます! iOS4のマルチタスク機能は、なかなかわかりにくいので、まとめてみました。

2010-06-27 23:21:06
Hirohito Kato ⌘ @hkato193

@k_katsumi ありがとうございます。件の呟きをした後に、私もこのページを見て「あ」と思いました。でも、HIGの方にも「そうとも取れる」という表現があったので、そのまま流してしまいました・・・

2010-06-28 09:37:11
Hirohito Kato ⌘ @hkato193

[iPhone4][multitasking] iPhone4で、アプリをたくさん起動したあとのメモリ消費の変化。けっこう消費しているなあという感想。 B! http://bit.ly/91TV5I

2010-06-28 09:51:55
Seasons @Seasons

iPhone4でマルチタスクに対応したゲームが突然死ぬとなけるので、 FreeMemory Liteで定期的に他のタスクを殺して空きメモリを確保しておくとよいかも。

2010-06-28 15:21:58
Hirohito Kato ⌘ @hkato193

@Seasons このアプリで解放(というのも何ですが)するメモリ領域で、他アプリの突然死を防げそうですか?

2010-06-28 15:23:29
Seasons @Seasons

@hkato193 このアプリで空きメモリを増やしておけば、足りなくなった時にバックグラウンドタスク=例えばゲーム が殺されずに済むかなぁーと。

2010-06-28 15:25:38
Hirohito Kato ⌘ @hkato193

@Seasons なるほどです。ちなみにバックグラウンドタスクが虐殺されるのって、どういうタイミングなんでしょうね。シミュレータでテストさせたりできないか、あるいは消されるタイミングを検知できないかなと。

2010-06-28 15:32:57
Seasons @Seasons

@hkato193 確か、マルチタスクのドキュメントにKillされる条件が掲載されていたはずです。 シミュレートする方法は、載っていなかったと思いますが、そのKillされる条件をみたすテストプログラムを書けば良さそうですね。

2010-06-28 15:36:27
Hirohito Kato ⌘ @hkato193

@Seasons おろろ、すみませんその項を見てませんでした…orz。確かにテストプログラムを作っておくべきですね。失礼しました

2010-06-28 15:40:09