「マルチタスク = 複数のプロセスを同時に実行できる能力」という教訓は誰もが知っています。私たちはその存在を特に意識せずにコンピューターで使用しています。アプリケーション間、または 1 つのアプリケーションのウィンドウ間の切り替えは (私たちにとって) リアルタイムで行われ、オペレーティング システムのこの機能を当然のことと考えています。
タスクが異なります
オペレーティング システムは、短い時間間隔ですべてのアプリケーションにプロセッサを割り当てます。これらの期間は非常に短いため、私たちが気づくことができないため、すべてのアプリケーションが同時にプロセッサを使用しているように見えます。私たちはそう思うかもしれません iOS 4のマルチタスク まったく同じように機能します。それはそんなに。最大の理由はもちろんバッテリー容量です。すべてのアプリケーションが実際にバックグラウンドで実行されたままになっている場合、おそらく数時間以内にソケットを探す必要があります。
iOS 4と互換性のあるほとんどのアプリケーションは、ホームボタンを押すと「サスペンドモード」またはスリープ状態になります。たとえて言えば、ラップトップの蓋を閉じるとすぐにスリープ モードになるようなものかもしれません。蓋を開けるとラップトップが起動し、すべてが蓋を閉じる前とまったく同じ状態になります。また、ホームボタンを押すと終了してしまうアプリもあります。そして、それは本当の終了を意味します。開発者は、これらのメソッドのどれを使用するかを選択できます。
しかし、アプリケーションには別のカテゴリがあります。これらは、iDevice 上でまったく別のことを実行している場合でも、実際にはバックグラウンドで実行されるアプリです。常時インターネット接続が必要な Skype が良い例です。他の例としては、バックグラウンド ミュージック (Pandora) を再生するアプリケーションや、GPS の常時使用を必要とするアプリケーションなどが考えられます。はい、これらのアプリはバックグラウンドで実行している場合でもバッテリーを消耗します。
眠るか撃墜するか?
iOS 4 と互換性のある特定のアプリケーションは、ホーム ボタンを押した後にスリープ状態にする (「サスペンド モード」にする) 必要がありますが、バックグラウンドで引き続き実行されます。 Apple は開発者に対し、それが何であれ、アプリのタスクを完了するのにちょうど XNUMX 分を与えました。 GoodReader でファイルをダウンロードしているとします。突然、誰かがあなたに電話をかけてきたとき、あなたはその重要な電話を受けるだけで済みます。通話が XNUMX 分を超えなかった場合は、GoodReader アプリケーションに戻ります。ファイルはすでにダウンロードされているか、まだダウンロード中の可能性があります。通話に XNUMX 分以上かかる場合はどうすればよいですか?アプリケーション (この場合は GoodReader) は、そのアクティビティを停止し、スリープ状態にできることを iOS に伝える必要があります。そうしないと、iOS 自体によって容赦なく終了されます。
これで、「モバイル」マルチタスクと「デスクトップ」マルチタスクの違いがわかりました。コンピュータではアプリケーション間の流動性と切り替え速度が重要ですが、モバイル デバイスでは常にバッテリ寿命が最も重要です。マルチタスクもこの事実に適応させる必要がありました。したがって、この記事を読んだ後、ホームボタンを 2 回押すと、「バックグラウンドで実行されているアプリケーションのバー」は表示されなくなり、実質的には「最近使用したアプリケーションのリスト」のみが表示されます。
著者: ダニエル・フルシュカズドルイ: ワンモアタップ.com
うーん、興味深い :) 私はいつも、それが Unix 上で実行できる方法と常に似ていると思っていました。アプリケーションには CPU 時間がゼロに割り当てられており、プロセスはメモリ内に常駐しているため、すべてのリソースが割り当てられています。そのため、ホームを 10 回押して、すぐにアプリケーションを停止して削除する必要がありました。これは、下部の非表示シートにアプリケーション アイコンがあっても、そのアプリケーションはかなり前 (XNUMX 分後) に閉じられたままであることを意味しますか?
一番下のリストには、単に最近開いたアプリケーションが表示されます。そのため、一部はまだ実行でき、一部は中断され、一部は完全に終了します。リストからアプリケーションを手動で削除すると、そのアプリケーションが実行中 (または一時停止中) にあった場合に終了してしまうという「副作用」があります。
アプリケーションはそれらの追加の 10 分について自分自身に通知する必要がありますが、それを取得できるという保証はありません。
まあ、それでも、リストからアプリケーションを閉じるという強迫観念は消えませんでした (誤ってリソースを消費してしまったらどうしますか? :-D)
私の理解では、10 分はバックグラウンドで動作する必要があり、「Skype、GPS、音楽再生」のカテゴリに当てはまらないアプリのためのものです。他のアプリケーションはサスペンド モードに切り替わり、他の目的でメモリが必要になるまでメモリ内に留まります。
サスペンド モードには、アプリを強制終了する必要がある場合でも、データが失われず、サスペンドに切り替えた瞬間にすべてが保存されるという利点があります。
または、再生などの場合、コマンド bg / fg に相当します。
また、バックグラウンドで長時間実行されているプレーヤーやその他のアプリケーションはどうなるでしょうか?つまり、私は開発者として「選択」できるのでしょうか、それとも何らかの形で Apple によって承認される必要があるのでしょうか?
アプリケーションを実際にバックグラウンドで無制限に実行するには、次のいずれかのアクションを実行 (登録) する必要があります。
– 位置情報サービス(GPS)を使用する
– バックグラウンドで音楽を再生する
– VOIP (Voice over IP) を使用する
タイトル (内部の様子) からわかるように、この記事には技術的な詳細を含むもう少し広範な説明が含まれると予想していました。これは記事に対するペレックスのように見えます。ペレックスなら続編はいつですか?返金してもらえますか? :-)
さらに詳しく知りたいことは何ですか?
タイトルに「内部」と含まれる記事からは、詳細な技術的な説明 (著者は、たとえば、アプリケーションを切り替えるときのオーバーヘッドや、システム リソースへの同時アクセスがどのように処理されるかなどを分析できます)、他のモデルとの比較を期待します。 (たとえば、ジェイルブレイクされた iPhone の場合)。いくつかの測定値でバックアップすることが理想的です。タイトルに「内部」が含まれる記事には、この非常に表面的な説明よりもはるかに多くのことを期待していました。
skypeのようにバックグラウンドで継続的に実行され、接続が切断されないicqクライアントはありますか?
アプリケーションがサスペンド モードに入るまでの時間は 10 分ではなく 10 秒です...そしてこのプロセス中に、一部の部分がバックエンド サービスで「ハング」する場合としない場合があり、その一部はすでに上にリストされています。これが Apple の言うところの「スマート」です「マルチタスク……」その後システムが彼女を撃墜した
何かがダウンロード、アップロード、または処理されている場合、アプリケーションにはさらに時間がかかる場合があります。 GPS、VoIP、または音楽の再生とは何の関係もなく、ミニマリスト モードで無制限に実行されます。