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

iOS4ではいよいよマルチタスキングを実現できるようになったわけですが、開発者にとっては注意しなければならないことが圧倒的に多くなったのも事実です。 個人的に調べたときの呟きメモ、それにTL上で気になった情報をまとめましたので、参考にしてみてください。 補足などはぜひコメントへ!!
iOS 4 iPhone
18190view 5コメント
38
narumij @narumij
あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?
marvelph @marvelph
!!! RT @narumij: あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?
Hirohito Kato ⌘ @hkato193
アプリ側の責任ですね。キーボードの切り替えも。 RT @marvelph: !!! RT @narumij: あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?
Hirohito Kato ⌘ @hkato193
補足です。HIG( http://bit.ly/bWUjV6 )によれば「編集中状態などであれば終了させておくべき」とのことです。 RT @marvelph: !!! RT @narumij: あれ、マルチタスキング中に言語切り替えるとどーなるんだろ?
Hirohito Kato ⌘ @hkato193
アプリがバックグラウンドに入る場合は、これまでwillTerminateで呼んでいた保存処理を呼んでおかないと。そのときのdelegateメソッドはapplicationDidEnterBackground:
Hirohito Kato ⌘ @hkato193
バックグラウンド時にメモリ警告をシミュレートしてみたけれど、applicationDidReceiveMemoryWarning:は呼ばれなかった。うむむ、安易な実装で「iOS4対応」っていうのは憚れるなあ。
Hirohito Kato ⌘ @hkato193
バックグラウンドにした後は、Application Delegateが殆ど来ていない。そうなるとデータ保存のタイミングは applicationWillTerminate:だけでは絶対に駄目か。
Hirohito Kato ⌘ @hkato193
バックグラウンド化で呼ばれるデリゲートメソッドはapplicationWillResignActive:とapplicationDidEnterBackground:の2つだけど、データ保存のタイミングは後者。なぜならホームボタン2度押しでも前者が呼ばれるから
Hirohito Kato ⌘ @hkato193
一方UIViewControllerはというと、viewWillDisappear:はバックグラウンドに回るときも、ホームボタン2度押しでも呼ばれなかった。まだ検証不足だけれど、アプリケーションの動作状況に影響は受けない、ということかな。
Hirohito Kato ⌘ @hkato193
マルチタスキング怖いよー。
Hirohito Kato ⌘ @hkato193
マルチタスキングを掌中に収めるまではUIApplicationExitsOnSuspendをTRUEにしておくのが吉だと思った。使っていただく方に迷惑をかけかねないし、そもそもマルチタスキングの必要性があるケースは少ない。
Hirohito Kato ⌘ @hkato193
あ、でも自分のアプリはマルチタスキングに対応させる予定ですので、どうぞあしからず。
marvelph @marvelph
日時をリスト表示してたりする場合は、ビューがアンロードされていなくても表示の度にリロードする必要がありそうですね。RT @shiki_hellkite: アプリ側は考える事が増えそうですね。 RT @hkato193 アプリ側の責任ですね 。キーボードの切り替えも。 …
iphone_dev_jp @iphone_dev_jp
iOS4 のアプリケーションの状態遷移をまとめてみました。http://bit.ly/cHtbIY [@ytka]
Kazuyuki Imada @kimada
[iPhone技術情報][iOS4][SysStats Monitor][SysStats Lite]iOS4でバックグラウンド化されているアプリを確認する方法 http://bit.ly/bBVzD5
Kazuyuki Imada @kimada
@tYabee blogで、記事とアプリのご紹介いただきありがとうございます! iOS4のマルチタスク機能は、なかなかわかりにくいので、まとめてみました。
Hirohito Kato ⌘ @hkato193
@k_katsumi ありがとうございます。件の呟きをした後に、私もこのページを見て「あ」と思いました。でも、HIGの方にも「そうとも取れる」という表現があったので、そのまま流してしまいました・・・
Hirohito Kato ⌘ @hkato193
[iPhone4][multitasking] iPhone4で、アプリをたくさん起動したあとのメモリ消費の変化。けっこう消費しているなあという感想。 B! http://bit.ly/91TV5I
Seasons @Seasons
iPhone4でマルチタスクに対応したゲームが突然死ぬとなけるので、 FreeMemory Liteで定期的に他のタスクを殺して空きメモリを確保しておくとよいかも。
Hirohito Kato ⌘ @hkato193
@Seasons このアプリで解放(というのも何ですが)するメモリ領域で、他アプリの突然死を防げそうですか?
Seasons @Seasons
@hkato193 このアプリで空きメモリを増やしておけば、足りなくなった時にバックグラウンドタスク=例えばゲーム が殺されずに済むかなぁーと。
Hirohito Kato ⌘ @hkato193
@Seasons なるほどです。ちなみにバックグラウンドタスクが虐殺されるのって、どういうタイミングなんでしょうね。シミュレータでテストさせたりできないか、あるいは消されるタイミングを検知できないかなと。
Seasons @Seasons
@hkato193 確か、マルチタスクのドキュメントにKillされる条件が掲載されていたはずです。 シミュレートする方法は、載っていなかったと思いますが、そのKillされる条件をみたすテストプログラムを書けば良さそうですね。
Hirohito Kato ⌘ @hkato193
@Seasons おろろ、すみませんその項を見てませんでした…orz。確かにテストプログラムを作っておくべきですね。失礼しました
残りを読む(22)

コメント

Hirohito Kato ⌘ @hkato193 2010年6月28日
実際にマルチタスキングに対応したソースを書いた記事を見つけたので、追加しました。記事は続きがありました。
Hirohito Kato ⌘ @hkato193 2010年6月28日
大事なことを書き忘れていました。この諸々の呟きの元ネタは、いずれも @k_katsumi さんです(この辺りはすでに乗り越えていらっしゃるかと)。多謝です!
@takayukiadr 2010年6月28日
RT @norio_nomura: jettison/dʒétəsn/ 名 詞•U(緊急時に船飛行機を軽くするための)投げ荷, 船外[機外]投棄. ━━動 詞•他動詞 1 〈積み荷を〉投げ荷する;〈重荷じゃまなものを〉投げ捨てる, 放棄する. 2〘トランプ〙〈不要なカードを〉捨てる.
Hirohito Kato ⌘ @hkato193 2010年6月29日
通知周りの処理にも気を付けないといけない点を、リストの最後に追加しました。
ログインして広告を非表示にする
ログインして広告を非表示にする