質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.45%

  • Swift

    8973questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • iOS

    4787questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Objective-C

    1270questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

  • iPhone

    1130questions

    iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

アプリが「終了」するタイミングについて

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 3,339

interpiamobile

score 44

アプリが終了するタイミングについてわからないことがあるので質問させていただきます。
そもそもアプリが終了するということについてよくわかりません。
iPhoneアプリを起動させたり以下の記事を読んだりしている内にだんだんもっと分からなくなってきました。

今更聞けない、iOSのマルチタスクの仕組みについて解説しておく

まず何かのiPhoneアプリを起動して遊んでいたとします。そしてホームボタンを押すと、それから5秒以内にはアプリは終了すると上の記事に書いているのですが、「Not running」が一般的にアプリを終了しているという状態でしょうか?それとも「Suspended」が終了という状態でしょうか?
「Not running」と「Suspended」の違いはメモリを確保してるかしてないかだけで、どちらもアプリは動作してないのでどちらもアプリを終了している状態ということでよろしいでしょうか?
今まで単にホームボタンを押すとアプリをバックグラウンドで実行をさせる状態にし、マルチタスク画面からアプリを上にフリックするとアプリが終了するのだと思っていたのですが、上の記事を読むとそうでないことが分かってきました。
しかし、例えばiPhoneにデフォルトで備わっている連絡先アプリを起動して誰かの連絡先情報を編集していたとします。この時にホームボタンを押してホーム画面に遷移し、5秒以上経ってからマルチタスク画面を起動して先ほどの連絡先アプリを起動すると、いきなり先ほどの編集画面からアプリがスタートすると思います。
次に今度は編集中にホームボタンを2回押してマルチタスク画面を起動して連絡先アプリを上にフリックしてマルチタスクから削除します。そしてホーム画面がら連絡先アプリを起動すると、編集画面からの起動ではなく連絡先一覧(つまり一番最初の画面)から起動すると思います。
両方ともホームボタンを押したことで状態が「Suspended」になっていると思います。なのになぜ次回の起動で最初に表示される画面が違うのでしょうか?どちらもアプリが終了しているので、どちらも一番最初の画面から起動されるべきだと思うのですが...。
ということはマルチタスク画面からアプリを上にフリックして削除すると、アプリは「Not running」になるのでしょうか?
そしてホームボタンを1回押しただけだと、アプリは「Suspended」になるのでしょうか?
まとめると、ホームボタンを1回押してホーム画面に遷移するとアプリはメモリを確保したまま終了し、マルチタスクから上にフリックしてアプリを削除した場合はメモリを開放してアプリを終了するということでよろしいでしょうか?

また、以前アプリを使っていてある情報を取得した後にアプリ全体の情報を更新するためにリフレッシュボタンを押すかマルチタスクを起動してそのアプリを上にフリックしてからもう一度そのアプリを開いて情報を更新していたのですが、情報を取得後にホームボタンを2回押してマルチタスクを起動した後にもう一度ホームボタンを押してそのアプリに戻ると情報が更新されていました。ということは、一回でもホームボタンが押されるとiOSではアプリの状態が最新に更新されるようになっているのでしょうか?(それともそのアプリにそういう処理が書かれていただけ?)

どなたかこの辺に詳しい方がいれば教えていただきたいです。よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

Suspendedは一時停止状態なので、終了とは異なります。
終了した場合は次回起動時に最初から起動する必要がありますが、一時停止状態では続きから再開されます(アプリによっては定期的にBackground状態になって動作することもあります)。

ただ、続きから再開されるといっても、ネットワーク接続をするアプリケーションなどは、一時停止の間にネットワーク先などで変化があると予想されるので、再開時にそれを考慮した処理が必要になります。

大元の記事では、CPUを使用しているかどうか(バッテリーを消費するかどうか)の観点で書かれていますので、SuspendedとNot Runningが同じように見えるだけですね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/08 10:23

    ご回答ありがとうございます。「終了した場合は次回起動時に最初から起動する必要があります」とのことですが、この終了した場合というのがマルチタスクからアプリを上にフリックしてアプリがマルチタスクから消えた状態のことでしょうか?ということは以下のような理解でよろしいでしょうか?

    ・ホームボタンを押す → Background → 数秒たったらアプリが一時停止する(Suspended)
    ・マルチタスクを起動してアプリを上にフリックする → アプリが終了する(Not Running)

    キャンセル

  • 2016/02/08 13:37 編集

     ご理解のとおりです。

     ちなみに、マルチタスク画面は、過去に起動したアプリの履歴としての機能も持っていますので、マルチタスク画面に表示されていないならNot Runningですが、表示されていてもSuspendedとは限りません(例えば、iOS端末の再起動後は、各アプリはNot Runningですが、マルチタスク画面に履歴として残っています)。

    キャンセル

  • 2016/02/08 13:57

    なるほど、やっとスッキリしました!
    確かにiPhoneを再起動した後アプリがマルチタスク画面に残っているのを見たことがありますが、あれはNot Runningなのですね。(知らなければまたどこかで混乱してたと思います^^;)この度は誠にありがとうございました。

    キャンセル

0

アプリ起動、ホームボタン、アプリはサスペンド状態へ移行
アプリ起動、ホームボタンダブルクリック、タスク一覧から該当アプリフリック、アプリ強制終了

サスペンド状態のアプリでも優先実行される権利が剥奪されている状態というだけでコッソリ動作しています。
アプリが起動され、画面に表示中の状態では、アプリはサスペンドしてる他のアプリよりも優先して実行されます。
サスペンドモードイベント、強制終了イベント、サスペンド復帰イベント、初回起動イベントをハンドルし、各タイミングでアプリの初期化、復帰方法は各アプリに委ねられます。

クラッシュオブクランなどは、サスペンド復帰時は必ずオープニングから復帰ですよね。
でも、一瞬だけサスペンドして画面をアクティブにしただけならサスペンドに移行した最後の画面状態で復帰します。時間管理を自前でやってて、何かしらのるーるに適合しない場合はすべてオープニングから起動しなおすという仕掛けになってるのででょうね。

サファリのようなタブブラウザは、タブ変えただけでサスペンドのイベントが走るようです。別タブで2-3回検索したりページ閲覧して、元のタブに戻るとリロードされたり、タブ切り替え直前の画面を保持してたり、様々です。ログインするタイプの画面だと、いつの間にかリロードされてしない、セッションがきれてしまうこともあります。

ということで、あぷりの作り次第ということで。サーバ処理と連携するアプリがほとんどですが、サスペンド復帰時と初回起動時は、一部処理が重なるんででょう。重なった場所がオープニングタイトル表示なら、アプリを再起動する必要がある、状態だったということ。

パズドラなども、サスペンドが長いとなるのか不明ですけど、サスペンド復帰時にオープニングから始まる場合があります。スタミナが増減するだけだから操作するがわとしては再起動しなくてもいいんじゃね?と思うのですが、再起動する必要があるからそうなった、と解釈すべきででょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/08 10:18

    ご回答ありがとうございます。
    なるほど、サスペンドなどのタイミングでの処理は各アプリに委ねられており、アプリによってマチマチなのですね。サスペンドは終了というよりはバックグラウンドで動作しているような感じでしょうかね?(サスペンドとバックグラウンドの違いがややこしいです)

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Swift

    8973questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • iOS

    4787questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Objective-C

    1270questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

  • iPhone

    1130questions

    iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。