アプリケーションマルチタスクのAndroid実装とiPhone実装の主な違いは何ですか?


9

アプリケーションレベルでのマルチタスクのAndroid実装とiPhone実装の主な違いは何ですか?

(これを主観的なファンボーイの議論に変えないでください?)

回答:


6

これはあなたの質問への答えではありませんが、両方のオペレーティングシステムが内部で完全にマルチタスク[1]であることを明確にする価値があります(それらは複数のプロセスを実行でき、実行できるため)。

あなたの質問は、アプリケーションレベルのマルチタスク(「あるアプリケーションを別のアプリケーションを使用している間、実行したままにすることはできますか?」)について明確です。例(メールを読みながらPandoraを聴くような)。具体的には、多くのアプリケーションは、状態を保存または復元する限り、実行を停止したことがないかのようにユーザーに表示するために、バックグラウンドで実行する必要はありません。定期的な操作(メールのチェックやアラームのポップアップなど)を実行する必要があるアプリケーションも、バックグラウンドで継続的に実行する必要はありません。OSによって時々呼び出される可能性があります。大きな問題は通常、Pandoraのように、バックグラウンドで一定のCPUを必要とするアプリケーションです。

一般に、Appleはバックグラウンドアプリケーションの継続的な実行を阻止または防止するためにより多くの努力をしてきましたが、Androidはよりオープンに見えます。しかし、AppleはPandoraのようなアプリのバックグラウンドでの実行を許可し、Androidは、ポーリングや保存された状態で十分な場合に、不要なバックグラウンドタスクを阻止するための豊富なツールを提供しているため、収束しています。

[1] http://en.wikipedia.org/wiki/Computer_multitasking


1
いい視点ね。質問を編集します。

3

私の知る限り。

iPhoneのマルチタスク処理はさらに制限されています。マルチタスクアクティビティは、次のいずれかである必要があります。

  • バックグラウンドオーディオ
  • VoIP
  • 背景の場所
  • プッシュ通知
  • ローカル通知
  • タスク完了
  • アプリの高速切り替え

[ Gizmodoに感謝!]

一方、Androidでは、PCと同様の方法で真のマルチタスクを実行できます。

Androidファンボイであると非難される前に、何か説明させてください。iPhoneのマルチタスクモデルはほとんどの状況で十分であり、Androidシステムに付随する多くの問題(つまり、メモリ不足)を回避します。


真のマルチタスク?WebOSやシンビアンの人々は同意しないと思います...
Ivo Flipse

2

Androidには、アプリケーションレベルのマルチタスクという概念がPCとは異なります。データ、データの表示方法、およびデータの操作方法の間には、より多くの切断があります。

一度に開くことができるアプリビューは1つだけですが、データの操作はバックグラウンドで実行できます。このため、アプリケーション開発者は、アプリを切り替えたり、アプリを終了したり、新しいアプリを起動したりするときに、デスクトップのように感じることが難しくなっています。アプリを強制終了できない場合がありますが、1つのタスクに切り替えて再び元に戻すことが不可能であるように感じる場合もあります。それはアプリ開発者がそれをどのようにしたかに依存します。

バックグラウンドプロセスは一度にいくつでも実行でき、デスクトップアプリのようにスケジュールされます。Linuxカーネルは、メモリとCPUリソースを取得する優先順位付け方法を選択します。電話がメモリ不足だと判断すると、メモリを増やすために物事を殺し始めます。これは、Linuxまたは他のほとんどのOSの通常の動作とは異なる方法で行われます。

プログラムのデータは常に利用可能です。アプリがデータにアクセスする権限を持っている限り、それは利用可能です。サービスを利用するために、サービスをバックグラウンドで実行する必要はありません。

アップルには、マルチタスクを実行できる非常に特殊な方法があります。これらは、Androidで可能な方法のサブセットです。バックグラウンドで実行できるのは特定の種類のアプリのみであり、そのために特別にプログラムする必要があります。

デスクトップは、これらの両方とは大きく異なります。多くの場合、各アプリケーションのビュー、データ、およびデータ処理ロジックは一緒にロックされています。WebOS、Symbian、Maemo / Meegoは、モバイルデバイスでのこの例です。アプリケーションがデータとバックグラウンド処理を他の「ビュー」に公開する場合、それは非常に特別なアプリケーションになる傾向があります。


参考までに、Linuxはすべての化身にOOM Killerを備えています。Android固有ではありません。ただし、PCでは、物事を殺し始める前に、スワップ領域と物理RAMを消費する必要があります。

実際にはそうではありません:wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget#s-3.1.5 これは、実行するためにカーネルにパッチを当てる必要があるという点で、Androidが本当にLinuxでないことの難しいことの1つです。Dalvikを標準のカーネルで実行してみてください。これで先に進むことができなくなります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.