先日の記事(Application does not run in backgroundについて)の内容を図にしました。
Application does not run in background を YES にすると、大まかに言って2つの違いがあるようです。
(1)閉じるとバックグラウンドに入らずTerminateされる(5本指ジェスチャーで閉じるのも同じ)
バックグラウンドでの実行を禁止しているので、想像通りの挙動です。
(2)ロック状態になると非アクティブになるだけ
この点について把握していなかったので今回苦労してしまいました。
ホームボタンを押したらアプリが終了するという挙動にしたかったので、Application does not run in background を YES にしていましたが、そのためスリープボタンを押してロックされたことの検出ができなくなっていました。
Application does not run in background が NO(標準設定)の場合は、ロックされるとバックグラウンドに入り(applicationDidEnterBackgroundが呼ばれ)、しかも[UIApplication sharedApplication].applicationState が UIApplicationStateInactive になります。
しかし、YES になっているとバックグラウンドに入らないため applicationDidEnterBackground が呼ばれず、applicationWillResignActive が呼ばれるだけです。そのため、ホームボタンダブルクリックのタスク切り替えと見分けがつきません。
このあたりについて調べた結果を、図にしました。
左側が Application does not run in background = NO(標準設定)の場合、右側が YES の場合です。
起動
20121121-174703-3309.png
ホームボタンを押してバックグラウンドに入れる
20121121-174708-3310.png
アイコンをタップ(再起動)
20121121-174713-3311.png
ホームをダブルクリックしてタスク選択を表示
20121121-174720-3312.png
タスク選択から復帰
20121121-174725-3313.png
電源ボタンを押してロック
20121121-174734-3314.png
ロックから復帰
20121121-174741-3315.png
5本指で閉じる
20121121-174749-3316.png


0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください